2014-11-04 21 views
1

我在學習的WordPress(和簡碼)的早期階段,所以多多包涵:Wordpress短代碼與單獨的模板/文件?

對我來說,簡碼似乎是不必使用特定的頁面模板一切的瑞士軍刀。我喜歡儘可能多地在wysiwyg中構建儘可能多的頁面,但通常我會需要一些(可重用的)php東西以某種方式顯示內容。

已經GOOGLE了很多,在我看來,做簡碼的方法是這樣的:

function caption_shortcode($atts, $content = null) { 
    return '<span class="caption">' . $content . '</span>'; 
} 

我的問題是,是否有可能把HTML在一個單獨的模板十歲上下的文件?把所有這些標記放在這裏似乎是錯誤和冗長的,可以用引號和et.c.就像短代碼的模板文件一樣,shortcode可以傳遞一些數據傳輸對象(或者僅僅是一些作用域變量)。所以:在模板文件中顯示,在短代碼函數(無論它可能被定義,函數.php,單獨的插件,或其他)中查找數據(傳遞給所述模板文件)的邏輯。

+1

你現在把這個函數放在哪個文件中?你可以在你的functions.php中包含文件,就像你在php中一樣。所以你可以創建你想要的任何文件。 – veelen 2014-11-04 21:27:06

+0

我已經把shortcode準確地放在了functions.php中(因爲缺乏更好的知識) - 所以你說的是,我可以拉一個文件(使用include?),並且在這個文件中,函數中的局部變量(駐留在functions.php中)將可用? – 2014-11-04 21:35:50

+0

爲了保持可維護性,我建議將所有短代碼分組在一個類中。一個好的,但更高級的例子是WC shortcodes類:https://github.com/woothemes/woocommerce/blob/master/includes/class-wc-shortcodes.php – diggy 2014-11-04 21:40:55

回答

0

對於影響功能的代碼,將代碼放入插件中。

對於APPEARANCE,請將您的代碼放入主題的模板文件或funtions.php文件中。 許多開發WP開發人員將所有代碼都集成到主題的functions.php文件中,但這往往是錯誤的地方(例如,如果代碼可能會導出到另一個主題)。只能將特定主題的代碼放在主題的functions.php中。 爲了得到WordPress的認識到你的插件,創建一個PHP文件並啓動文件是這樣的:

<?php 
/* 
Plugin Name: My Caption Shortcode Plugin 
Description: A really cool plugin 
*/ 

    function caption_shortcode($atts, $content = null) { 
     return '<span class="caption">' . $content . '</span>'; 
    } 
?> 

將這個文件在你的插件目錄(通常,你應該爲每個插件子目錄)。插件通常保存在/ wp-content/plugins /中。然後,您可以在管理菜單中的插件選項卡上激活或停用代碼作爲插件。

當然,這個插件不會做任何事情。請記住插件功能應通過動作鉤子,過濾器和簡碼被掛鉤到Wordpress中。例如,對於短代碼,您可以在某處使用函數add_shortcode讓Wordpress知道您的函數是簡碼。

+0

Thx,吉姆。我聽到你把自定義的東西放在可重用的插件中。然後例如使用add_shortcode方法將它們添加爲簡碼(在我的情況下)。但是:我仍然看到引用的html。也許我太多的ASP.NET MVC開發(我是!),但我覺得HTML應該在一個文件,看起來像HTML。語法突出顯示,所有。每當具有屬性+值的html被放入1個字符串中(轉義和東西),我就會感覺到這種不好的感覺 - 這不太好。我試圖找出,wordpress-development中是否存在一種模式,使html與邏輯分離(即查找要顯示的數據),et.c. – 2014-11-04 23:56:22

+0

好處是,您應該像練習一樣嘗試讓Markup與您正在修改的任何內容分離。例如,假設您有一個插件可以做一些簡單的事情,比如在帖子的內容中添加某種jQuery。在這種情況下,您可以使用wordpress'filter'(作爲插件)在輸出之前將標記添加到內容中,並將未修改的內容保留在數據庫中。對此,沒有「標準」的wordpress練習,但有經驗的開發人員想要從內容中分離標記,這取決於具體的應用程序。 – 2014-11-05 03:24:29

+0

這是Wordpress中用於從邏輯中分離html的獨特模式。一個「主題」,控制着網站的大部分外觀。在一個主題中,通常有幾個PHP文件是各種視圖的核心。例如,single.php被用作模板來查看單個帖子。法典解釋了這一切:http://codex.wordpress.org/Template_Hierarchy – 2014-11-13 07:20:49

0

您可以設置視圖(php文件),然後將部分視圖包含在這些視圖中。 Wordpress允許模板被包含在其他模板中,以確保代碼重用,並且可以通過兒童主題輕鬆修改。你可以使用這個函數來包括那些

get_template_part($slug); 

但是,在你的情況下,短代碼函數需要返回值給調用者函數。所以,這個設置將不起作用。