web-dev-qa-db-ja.com

テーマのカスタムカテゴリフィールドデータを呼び出す方法

カテゴリに2つのカスタムフィールドを追加しようとしています(この回答のおかげでこれを実現しました - カテゴリエディタにカスタムフィールドを追加する例は?

そして今、私は自分のテンプレート内でそれらを呼び出す必要があります(Headwayカスタムコードブロックを通して)。

私はほとんどそこに例がたくさんあるのを見たことがある、しかし私はそれをうまく動かすことができない!

あなたが私にああとても感謝しているだろう分野の1つを呼び出すのに使用する必要がある正確なphpを私に知らせてください!さもなければ私はプラグインに頼っています(そして私はすでにやり過ぎています!)

これがコードです

<h1 class="collapseomatic" title="Click for more" id="<?php the_ID();?>">
    <?php single_cat_title(); ?> 
</h1>
<p>FIELD ONE </p>

<div id="target-<?php the_ID(); ?>" 
    class="collapseomatic_content force_content_collapse" 
    style="background: white; min-height: 16px; padding: 5px; width: 95%;">

    <?php echo '<div class="seo_text"><p>'FIELD TWO'</p></div>'; ?>
    <?php echo '<div class="seo_text"><p>'.category_description( $category_id ).'</p> </div>'; ?>       
</div>

更新

私は今カスタム関数を作成しようとしました

function ddgseo_title1() {
    //get the current term
    $term = get_term_by( 
        'slug', 
        get_query_var('term'), 
        get_query_var('taxonomy') 
    );

    //get the saved category custom fields
    $fields = get_option(MY_CATEGORY_FIELDS);

    if ( isset($fields[$term->term_id]) ) {

        //extract just the needed term fields
        $term_fields = $fields[$term->term_id];

        //Now $term_fields holds all of your category fields so to get a specific field:
        if ( isset($term_fields['_ce4-categoryTitle']) )
            echo $term_fields['_ce4-categoryTitle'];
    }
}

そして.ddgseo_title1()でテーマhtmlにタイトルを呼び出そうとしています

1
Kate

リンクした質問で提案された方法を使用している場合は、すべてのカテゴリメタフィールドがオプションデータベーステーブルの単一のオプションに格納されるため、テーマのデータを取得するにはそのオプションを取得してフィールドを抽出する必要があります。そこから、のようなもの、

//get the current term
$term = get_term_by( 'slug', get_query_var('term'), get_query_var('taxonomy') );
//get the saved category custom fields
$fields = get_option(MY_CATEGORY_FIELDS);
if (isset($fields[$term->term_id])){
    //extract just the needed term fields
    $term_fields = $fields[$term->term_id];
    //Now $term_fields holds all of your category fields so to get a specific field:
    if (isset($term_fields['Field-Name']))echo $term_fields['Field-Name'];
}
1
Bainternet