web-dev-qa-db-ja.com

創世記の子をテーマにした投稿へのカスタムフィールドの表示

私は創世記のテーマフレームワークの子テーマを使って私の投稿にカスタムフィールドを表示させるためにあらゆることを試みました。私はそれに関連して見つけることができるすべてのチュートリアルに従うことを試みました、それでも私は私の投稿に私のカスタムフィールドを表示させることができません!

私が試していた最も見栄えの良い解決策は、Brad Daltonsの命令を使用して(私は他の多くの方法を試したことがあります)、関数ファイルに以下を追加します。

add_action( 'genesis_after_post_title', 'custom_field_before_content' );
/**
* @author Brad Dalton - WP Sites
* @link http://wp.me/p1lTu0-9WF
*/
function custom_field_before_content() {
if(is_page() || is_single() ) {
genesis_custom_field('instrument');
}
}

その後、自分の投稿にカスタムフィールドを追加しました。アドバンストカスタムフィールドでカスタムフィールドを追加しようとしましたが、アドミンでは完全に表示されますが、自分のサイトの投稿には表示されません。

これを出力するために私が間違っていること、または私のために働くかもしれない別の方法を誰かが知っていますか。私はこれを問題なくやってみましたが、創世記のテーマフレームワークを使ってもうまくいきません - 2日間続けました!

ありがとう、

Ciarán

2
Ciarán

genesis_custom_field('instrument');を使う代わりにどうですか:echo genesis_get_custom_field('instrument');

加えて、genesis_after_post_titleアクションフックは1.7.0から非推奨となりました。正しい優先度でgenesis_entry_headerを使用するべきです。詳細については、下記の参照リンクを使用してください。

参照:

1
Borek

これがカスタム投稿タイプに対する私の解決策です。

これをfunctions.phpに追加してください。 (または、single-instrument.phpなど、私が作成したようにカスタム投稿タイプのテンプレートを作成した場合は、functions.phpの代わりにそれを追加します)

// Display Advanced Custom Fields
add_action('genesis_entry_header', 'type_of_instrument');

function type_of_attorney() {
if ( is_singular('profile') && genesis_get_custom_field('type_of_instrument') )
echo '<hr /><div id="type_of_instrument">Title: '. genesis_get_custom_field('type_of_instrument') .'</div>';
}

これは、Advanced Custom Fieldsで自分のフィールドに 'type_of_instrument'という名前を付けたと仮定しています。実際にフィールドに付けた名前はすべて使用してください。複数のフィールドのコードを調整する必要があります。また、スタイルを簡単にするためにフィールドの周囲にdivを作成します。

カスタム投稿タイプを使用していない場合は、is_singular('profile')を置き換えます。私の推測はis_singleですが、私を引用しないでください。そうでない場合は、あなたの質問であなたが提出したコードで使用されているif(is_page() || is_single() )を試してください。

それが役立つことを願っています!

2
user55013

良い質問Ciarán。私も、創世記にカスタムフィールドを表示しようとしていました。このスレッドは私に行き詰まりました。そして私は、これらのアイディアをもっと遠くに持ち込むことが可能であることを発見しました。

たとえば、WordPressでランディングページを作成するにはAdvanced Custom Fieldsプラグインを使用すると便利です。ページに必要なだけWYSIWYGフィールドを追加し、それらをすべて別々に編集することができます。

創世記でフィールドを表示するために、私はBorekとuser55013によって以前に与えられたコードのバリエーションを使います。以下のコードでは、CSSで各フィールドを別々にフォーマットできるようにdivタグを追加しました。

add_action( 'genesis_after_content', 'display_custom_fields' );
function display_custom_fields() {
    if( is_page_template( 'page_landing.php') ) {
        printf( '<div class="landing-part-one">%s</div>', get_field('landing_part_one') );
        printf( '<div class="landing-part-two">%s</div>', get_field('landing_part_two') );
        printf( '<div class="landing-part-three">%s</div>', get_field('landing_part_three') );
        printf( '<div class="landing-part-four">%s</div>', get_field('landing_part_four') );
    }
}

一方、Advanced Custom Fieldsのフィールドグループエディタのオプションパネルに戻って、私はカスタムWYSIWYGフィールドを "High(after title)"に配置し、コンテンツエディタを隠しました。これにより、カスタムフィールド用のクリーンな編集スペースが作成されます。カスタムフィールドは、WordPress固有のものとしてページエディタに表示されます。また、ロケーションルールで、ランディングページテンプレートに対してのみ表示するようにフィールドグループを設定しました。

そして私はもともとこの関数のフィールドを表示するために 'genesis_get_custom_fields()'を試みましたが、それはフィールドからすべての<p>タグを取り除きました。出力は実行段落でした。高度なカスタムフィールド関数 get_field() がよりよく機能します。

その過程で私は「genesis_custom_fields()」と「genesis_get_custom_fields()」の違いも学びました。最初のものはフィールドを直接エコーします。 2番目は文字列としてフィールドの内容を返します。

高度なカスタムフィールドを使用して画像を出力している場合は、 このスレッド を使用してください。

私はそれが役立つことを願っています:-)

0
lflier