Wordpress / WooCommerce
では、WooCommerce
属性にカスタムフィールドを追加することは可能ですか?
「属性」とは、商品の属性ではなく、一般的な属性を意味します。
詳細については、以下の画像を確認してください。
ACF
(Advanced Custom Fields)プラグインでそれを行うことは可能ですか?
ありがとうございます。
はい、可能です。そして、簡単なガイドがあります こちら 。
以下は、テーマのメインfunctions.phpファイルに追加できる作業コードです。
// Adds a custom rule type.
add_filter( 'acf/location/rule_types', function( $choices ){
$choices[ __("Other",'acf') ]['wc_prod_attr'] = 'WC Product Attribute';
return $choices;
} );
// Adds custom rule values.
add_filter( 'acf/location/rule_values/wc_prod_attr', function( $choices ){
foreach ( wc_get_attribute_taxonomies() as $attr ) {
$pa_name = wc_attribute_taxonomy_name( $attr->attribute_name );
$choices[ $pa_name ] = $attr->attribute_label;
}
return $choices;
} );
// Matching the custom rule.
add_filter( 'acf/location/rule_match/wc_prod_attr', function( $match, $rule, $options ){
if ( isset( $options['taxonomy'] ) ) {
if ( '==' === $rule['operator'] ) {
$match = $rule['value'] === $options['taxonomy'];
} elseif ( '!=' === $rule['operator'] ) {
$match = $rule['value'] !== $options['taxonomy'];
}
}
return $match;
}, 10, 3 );
ACFの[フィールドグループの作成/編集]画面で次のように表示されます。
用語編集ページのルールに一致する関数で、$options['ef_taxonomy']
が$options['taxonomy']
に変更されました—当時、配列キーtaxonomy
は存在しませんでした(私の場合)。そしてそれは現在存在し、ef_taxonomy
キーを置き換えると思います。 @ JordanCarter 主要な問題に気づいてくれてありがとう。 @ VadimH 最初の回答の編集に感謝。 =)
その関数では、PHPの「未定義」の通知を避けるためにif ( isset( $options['taxonomy'] ) )
チェックも追加しました。これに気づいてくれた@JordanCarterに感謝します。
@VadimH、get_field( '{NAME}', 'term_{TERM ID}' )
を使用して、次のようにフィールドの値を取得(および表示)できます。
$term_id = 123;
$value = get_field( 'my_field', 'term_' . $term_id );
get_field()
の公式 ドキュメント の「異なるオブジェクトから値を取得する」セクションを参照してください。
PS:コード全体(get_field()
だけでなく)は、ACF 5.7.6およびACF PRO 5.7.3でWooCommerce 3.4.5を使用して最後に試行およびテストされました。