2017-05-03 72 views
0

請耐心等待,因爲我對此很陌生。 所以我有一個自定義字段,我使用Wordpress中的高級自定義字段創建。在PHP中使用時不顯示自定義字段包含

我的模板代碼名稱是template-test.php,其中包含以下

<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> 

現在,當我點擊更新按鈕,然後點擊預覽使用WordPress管理員template-test.php預覽頁面。我可以看到我的帖子

但(「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頁面的生命週期。基本上,頁面模板顯示由wordpress'路由'系統提供給它的數據(你可以讓多個頁面使用相同的模板,並且每個頁面都顯示不同的內容),因此將它包括在其他地方不會有太大的作用。 – Steve

+0

@Maqk感謝您的解釋 – Mariton

回答

1

如果你看一下。在ACF文檔中,get_field()接受$ post_id作爲第二個參數,如果沒有提供,默認爲當前文章

因此,如果您將該文件包含在模板測試頁面中,那麼模板測試頁ID將被傳遞(並且將工作),但是如果您將其包括在我們的主頁上,則主頁ID被傳遞,這將不起作用,因爲該頁面沒有任何內容在這些領域。

如果您想訪問任何頁面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

相關問題