Taxonomy/Term用のカスタムフィールドmy_cf
があります。分類/期間のカスタムフィールドで値を取得して出力するにはどうすればよいですか。
私が使ってみました:
$variable = get_field('my_cf', 'basic');
echo $variable;
基本的なところ - 私の分類法の名前。しかしこれはうまくいきません。
助言がありますか?
私がコメントで投稿した ACFのドキュメントページよりもそれ以上説明できない :
すべてのAPI関数は分類用語で使用できますが、用語IDをターゲットにするには2番目のパラメーターが必要です。これは、post_idを通過して特定の投稿オブジェクトをターゲットにするのと似ています。
必要な$ post_idは、 分類名+用語ID をこの形式で含む文字列です。 $ TaxonomyName_ $ TermID
そのため、カスタムフィールドがmy_cf
、分類名がbasic
(not term name)、分類内のterm IDが42の場合、次のものが必要です。
$variable = get_field( 'my_cf', 'basic_42' );
あなたのフィールドデータはwp_optionsに保存されていますか?もしそうなら...
$term_id = 12345;
$term_meta = get_option( 'taxonomy_' . $term_id );
$my_cf = $term_meta[ 'my_cf' ];
echo $my_cf;
私は CMB2 を使用してカスタムフィールドを設定しますが、多くの場合、ロジックはACFとそれほど変わりません。私の特定のユースケースでは、 カスタムフィールド 値を表示する前に、 分類法 をいくつかチェックするために、非常に単純だが柔軟な関数を作成しました。
例として taxonomy named basic とするためにmy_cf
という名前のカスタムフィールドを作成したとすると、次の関数はあなたの質問に答え、おそらくカスタムフィールドの使用法を少し拡張するかもしれません。 。
function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {
global $post;
$terms = get_the_terms( $post->ID, $taxonomy );
// Check if we have a taxonomy and that it is valid. If not, return false
if ( !$taxonomy )
return false;
// Sanitize the taxonomy input
$taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );
// keep playing safe
if ( !taxonomy_exists( $taxonomy ) )
return false;
foreach ( $terms as $term ) {
// Set a variable for taxonomy term_id
$tax_term_id = $term->term_id;
$my_field = get_term_meta( $tax_term_id, 'my_cf', true );
// Make sure we do not have a WP_Error object, not really necessary, but better be safe
if ( is_wp_error( $term ) )
continue;
// escaping the returned value // esc_html(), esc_url(), esc_attr()
return esc_html($my_field);
}
}
basic
をあなた自身の分類名に置き換えて、単に<?php get_taxonomy_terms_custom_fields ('basic'); ?>
を使用してください。
関数get_taxonomy_terms_custom_fields ()
は、指定された分類法と投稿に割り当てられたすべてのカテゴリpost_typeを通るループの種類をチェックし、存在していればカスタムフィールド値を返し、存在しなければエラーを回避します。反復可能フィールドなどのarray()を生成するフィールドをチェックするように拡張することもできます。
私はそれが役立つことを願っています - 頑張ってください!