web-dev-qa-db-ja.com

分類法を使用してカスタムフィールドの値を取得する

Taxonomy/Term用のカスタムフィールドmy_cfがあります。分類/期間のカスタムフィールドで値を取得して出力するにはどうすればよいですか。

私が使ってみました:

$variable = get_field('my_cf', 'basic'); 
  echo $variable; 

基本的なところ - 私の分類法の名前。しかしこれはうまくいきません。

助言がありますか?

5
John Genry

私がコメントで投稿した ACFのドキュメントページよりもそれ以上説明できない

すべてのAPI関数は分類用語で使用できますが、用語IDをターゲットにするには2番目のパラメーターが必要です。これは、post_idを通過して特定の投稿オブジェクトをターゲットにするのと似ています。

必要な$ post_idは、 分類名+用語ID をこの形式で含む文字列です。 $ TaxonomyName_ $ TermID

そのため、カスタムフィールドがmy_cf、分類名がbasicnot term name)、分類内のterm IDが42の場合、次のものが必要です。

$variable = get_field( 'my_cf', 'basic_42' );
3
Milo

あなたのフィールドデータはwp_optionsに保存されていますか?もしそうなら...

$term_id = 12345;
$term_meta = get_option( 'taxonomy_' . $term_id );
$my_cf = $term_meta[ 'my_cf' ];
echo $my_cf;
1
Joey Yax

私は 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()を生成するフィールドをチェックするように拡張することもできます。

私はそれが役立つことを願っています - 頑張ってください!

1