2017-05-03 9 views
0

私はこれに新しいので、私に同行してください。 Wordpressのカスタムフィールドを使って作成したカスタムフィールドがあります。PHPで使用するとカスタムフィールドが表示されないを含む

私のテンプレートコードの名前はtemplate-test.phpであると私は更新ボタンをクリックし、プレビューをクリックすると、プレビューページtemplate-test.phpにWordpressの管理を使用する場合、ここで、次の

<div class="item-one"><?php the_content(); ?><span>text1</span></div> 
<div class="item-two"><?php echo get_field('sponsor_advertisement_one'); ?><span>text2</span></div> 
<div class="item-three"><?php echo get_field('sponsor_advertisement_two'); ?><span>text3</span></div> 

が含まれています。私は

(「sponsor_advertisement_one」と「sponsor_advertisement_two」の内容)私の記事を参照してくださいしかし、私は別のページ(home.php)に同じテンプレートファイルをインクルードしようとすると、使用することができます

<?php include("template-test.php"); ?>

をスパン内のテキストのみが表示されます。

注:PHPのページ(テンプレート-test.phpをとhome.phpが同じディレクトリにある両方

私はこの上壁に頭を叩いてきた

+1

あなたは別の場所でそれを呼び出している場合は、 'get_template_part( 'テンプレート'、 'テスト')を使用してみてください;'の代わりに含まれています。私はACFプラグインを使用していると思うの投稿IDを入れてください。値が入力された特定の投稿IDがありません。 – Maqk

+0

https://roots.io/routing-wp-requests/はWordPressページのライフサイクルを説明しています。基本的にページテンプレートは、ワードプレスの「ルーティング」システムによって提供されたデータを表示します(複数のページで同じテンプレートを使用することができ、それぞれ異なるコンテンツを表示できます)。 – Steve

+0

@Maqk説明をありがとう – Mariton

答えて

1

あなたが見れば。 ACFのドキュメントでは、get_field()は2番目の引数として$ post_idを受け取ります。これは、指定されていなければ現在の投稿をデフォルトにします。

したがって、テンプレートテストページにそのファイルを含めると、 IDは渡されますが(動作します)、ホームページに含めるとホームページIDは渡されますが、そのページにはコンテンツiがないため動作しませんこれらのフィールド。

任意のページIDコンテキストでこれらのフィールドにアクセスするには、明示的に指定する必要があり、そのフィールドがどこに含まれているかに関係なく機能するはずです。あなたがページスラッグを知っているなら、それを使ってIDを得ることができます。

$page = get_page_by_path('my-slug'); 
get_field('sponsor_advertisement_one', $page->ID); 
get_field('sponsor_advertisement_two', $page->ID); 

ACF get_field()のドキュメント: https://www.advancedcustomfields.com/resources/get_field/

+0

これについてもう少し詳しくお読みください。魅力のように働いた。ありがとう! – Mariton

関連する問題