2017-05-03 59 views
-1

我一直試圖將下面這行PHP轉換爲我的functions.php中的簡碼,以便將其添加到Wordpress頁面。如何將PHP函數轉換爲短代碼

<?php wp_nav_menu(array('theme_location' => 'header')); ?> 

經過一番研究,我發現下面創建簡碼的代碼,但我不知道如何添加PHP的線以上給它,或者哪怕是這樣做的正確方法。

function menu_shortcode($atts, $content = null){ 
    return '<nav class="main-menu-header">' . do_shortcode($content) . '</nav>'; 
} 

add_shortcode('nav', 'menu_shortcode'); 

我最初假設我是添加的do_shortcode的支架,而不必$content之間的代碼,但是這給了我一個錯誤。

任何幫助將不勝感激。

+0

你得到了什麼錯誤? – Scriptman

+0

'do_shortcode'用於在輸入參數中搜索短碼,並執行這些短碼。如果您有嵌套的短代碼,則需要這樣做 - 但對於菜單,可能沒有需要進一步擴展短代碼的內容。你希望你的短代碼返回菜單,所以你必須在函數的某個地方調用'wp_nav_menu'。 – CBroe

+0

這讓我感到害怕,我對PHP很不熟悉。我試圖找到一個解決方案,但我明顯過於複雜,一直在錯誤的地方尋找答案。我基本上只需要簡碼來顯示我在Wordpress中外觀部分配置的菜單鏈接。如果我添加下面的PHP - '<?php wp_nav_menu(array('theme_location'=>'header')); ?>'在我的html中,在我的header.php模板中,它可以工作。有沒有什麼辦法可以讓我在不使用插件的情況下顯示在我的Wordpress頁面上? – Jack1991

回答

1

根據我對上述問題的理解,這將對您有用。將它添加到您的functions.php,然後使用[nav]來顯示它。

function menu_shortcode($atts) { 
    return wp_nav_menu(array('theme_location' => 'header', 'echo' => false)); 
} 
add_shortcode('nav', 'menu_shortcode'); 
+0

謝謝,這可能看起來像一個愚蠢的問題,但哪一部分是實際的短代碼 - 即我輸入哪個部分來激活該功能? – Jack1991

+1

正如我上面所說的在functions.php中寫上述函數,然後在你想要顯示它的wordpress頁面中寫[nav]。 – shazyriver

+2

不要忘記設置回顯參數爲false,否則它不會在短代碼上下文 –