2016-01-22 35 views
1

幾乎每個向WordPress添加php頁面的指南都涉及到在主題級別添加它。例如How to add a PHP page to WordPress?。我想通過插件向多個網站添加一個新的面向公衆的頁面。我不想將這添加到數十個主題中。如果我可以將它添加到插件級別,它將適用於所有網站。通過插件添加一個PHP頁面到Wordpress

我有這個工作,但我需要一些注入到主題的方式。爲了獲得側邊欄和東西,而不必爲每個主題添加自定義CSS。

香港專業教育學院開始通過添加重寫規則

RewriteRule ^mypage /wp-content/plugins/myplugin/mypage.php [QSA,L] 

然後page.php文件包含

require_once('../../../wp-blog-header.php'); 
get_header(); 

//custom php content 
//get_sidebar(); // how to get this working. 
get_footer(); 

這也適用,但有問題的IM是側邊欄。有些主題沒有他們和其他人做。並非所有的側邊欄都是30%等我不知道如何在這裏建立div結構,使其工作。有些主題是100%的頁面寬度,但在其他固定寬度的主題上查看時,這看起來很難看。我已經能夠想出一些妥協,但是id能夠做到這一點。

總結我的主要問題是。有沒有可能調用一個將html注入主題頁面的方法。例如generate_page($ HTML);.然後該方法將轉到主題的page.php,並將$ html注入主題的內容區域。

編輯 在試圖動態地將內容插入一個未知的主題,香港專業教育學院做了以下

global $post; 

$post->post_content = "TEST PAGE content"; 
$post->post_title = "Page Title"; 
$post->post_name = "test-page"; 

include get_template_directory()."/page.php"; 

這適用於一些主題,而不是其他。有些主題會顯示這篇文章很好,但其他人(默認wordpres二十五個主題)顯示此文章,然後顯示數據庫中的每個其他文章後。林不知道爲什麼它拉動所有這些帖子,但如果我能夠阻止它看起來像這將是一個有效的解決方案。

+0

不確定要理解。你想從你的插件添加模板頁面? – Nozifel

+0

不完全,但這是我想要的最終結果。我希望能夠例如。從我的插件中的php腳本生成頁面的內容,然後使用當前的主題page.php來呈現我的內容。這樣,它將符合主題css –

回答

0

然後你可以嘗試在特定情況下加載特定的模板頁面。

function load_my_template($template) 
{ 
    if(is_page()) 
     $template = plugin_dir_path(__FILE__) . "dir_to/my_template.php"; 

    return $template; 
} 

或更改加載頁面

function load_my_content($content) 
{ 
    global $post; 

    $id = $post->ID; 

    if(is_page()) 
    { 
     ob_start(); 

     include plugin_dir_path(__FILE__) . "dir_to/my_template.php"; 

     $content = ob_get_clean(); 
    } 

    return $content; 
} 

上使用在你__construct()

add_filter('template_include', array($this,'load_my_template')); 
add_filter("the_content", array($this,"load_my_content")); 
add_filter("get_the_content", array($this,"load_my_content")); 

。希望幫助ü內容。 告訴我,如果它不符合你的問題。

+0

我需要一個動態系統。我不知道主題路徑或模板名稱。所以我會使用默認的single.php頁面。當我打電話要求「...../single.php」時,它只是加載主頁。不知道如何覆蓋$ post對象來做我想做的事情。 –

+0

'my_template.php'是插件中的模板頁面,如果is_page()覆蓋默認模板。如果你想擁有一個動力系統,那麼刪除if(is_page())並在所有情況下都適用。 – Nozifel

+0

ive爲我的原始評論添加了編輯,以更好地解釋我現在在哪裏。我不知道如何清除默認的WordPress的變量之前設置我自己的。當我打電話給主題page.php時,它已經有一堆東西了 –

相關問題