2015-02-10 103 views
0

我正在尋找最佳解決方案來爲WordPress中的博客頁面創建自定義佈局。將自定義模板分配到靜態博客頁面

您通常會從admin的模板元框中選擇一個自定義頁面模板來更改頁面佈局,但這不適用於靜態博客頁面。

默認情況下,WordPress模板層次結構正在尋找home.php然後index.php來顯示,它根本不檢查自定義頁面模板。 View the Template Hierarchy here. WordPress代碼也注意到博客頁面的這種情況:

請勿爲此頁面使用自定義頁面模板。模板文件home.php或index.php將用於在主題中生成此頁面。

我個人覺得這很奇怪。如果有一個頁面,我希望有不同的佈局可用,這是博客列表。

我目前唯一的解決方案是創建一個名爲「Blog Layouts」的新元組。然後,我的home.php根據metabox設置的值加載一個自定義模板部件。雖然我確信這會起作用,但知道WordPress提供了它自己的metabox來設置頁面模板,這讓人覺得有點不可思議。

如果有人有更好的建議,我很高興閱讀它們。

回答

1

您可以利用模板元框。

<?php 

function get_blog_template() { 
    // Get the template metabox value from the page used as post archive. 
    $template_file = get_post_meta(get_option('page_for_posts'), '_wp_page_template', true); 
    if ($template_file == 'templates/blog-small.php') { 
     get_template_part('templates/blog', 'small'); 
    } elseif ($template_file == 'templates/blog-wide.php') { 
     get_template_part('templates/blog', 'wide'); 
    } else { 
     echo 'Sorry, no template is found'; 
    } 
} 

?> 

然後調用home.php

<?php get_blog_template(); ?> 
0

如果網站只有頁面和帖子,那麼只要你有一個頁面的page.php文件,只需編輯index.php即可。沒有必要創建另一個模板文件。

+0

該網站的功能是相當複雜的,index.php文件不可用。目標是能夠在管理員中選擇多個模板,就像自定義頁面模板一樣,只有自定義頁面模板不能在靜態博客或首頁上工作。 – piggypig 2015-02-10 17:22:31

+0

您是否嘗試過創建自定義頁面模板並使用WP_Query來查詢您之後的帖子。我不確定我是否追隨你的目標。也許你應該對你的問題更具體。 – Ingvi 2015-02-10 17:27:35

相關問題