簡體   English   中英

在 WordPress 管理儀表板中加載自定義頁面模板

[英]Load custom page templates in WordPress admin dashboard

我的主題中有幾個自定義頁面模板。 但是我想用插件隱藏一些,並且只在已設置為首頁“is_front_page”或“is_home”的頁面上顯示自定義主頁模板。 這就是我在我的插件中用來阻止某些頁面模板顯示的內容。

這適用於有兩層站點的大型多站點,一層具有完整的功能集,另一層是發育不良的集。 除了這個,我的一切都可以按我的需要工作。

add_filter( 'theme_page_templates', 'je_remove_page_template' );
  function je_remove_page_template( $pages_templates ) {
  unset( $pages_templates['page-topimage.php'] );
  unset( $pages_templates['page-home.php'] );
  return $pages_templates;
}

上面的代碼完全正常,但是當頁面被設置為主頁時,我需要一個條件來顯示 page-home.php。 我試過這段代碼,但它不起作用。

if ( is_front_page() ) :

    add_filter( 'theme_page_templates', 'je_remove_page_template' );
    function je_remove_page_template( $pages_templates ) {
    unset( $pages_templates['page-topimage.php'] );
    return $pages_templates;
    }

    else :

    function je_remove_page_template( $pages_templates ) {
    unset( $pages_templates['page-topimage.php'] );
    unset( $pages_templates['page-home.php'] );
    return $pages_templates;
    }

endif;

關於如何讓它發揮作用的任何想法?

一些東西:

一,您似乎只將add_filter調用添加到is_front_page()true條件,這可能是其中的一部分。

其次,你應該定義和/或重新定義函數內部if語句!

第三,特別是對於 WordPress,由於它的Action Hook 和 Filter系統,通常認為最佳做法是始終添加過濾器和操作,並在函數內運行if/else或 abort 類型語句以允許更容易的可擴展性。

編輯:

根據一些澄清,我理解得更好一些。 您需要獲取設置為首頁的頁面的 ID,該 ID 存儲為選項表中名為page_on_front的選項。 is_front_page()函數只會在當前$wp_query循環的范圍內工作。

我想這會為你解決它。 theme_page_templates過濾器上運行je_remove_page_template函數,並根據page_on_front選項中存儲的 ID 檢查當前頁面的 ID:

add_filter( 'theme_page_templates', 'je_remove_page_template' );
function je_remove_page_template( $pages_templates ){
    unset( $pages_templates['page-topimage.php'] );

    $home_page_id = absint( get_option( 'page_on_front' ) );
    $this_page_id = get_the_ID();

    // If this isn't the home page, remove `page-home`
    if( $this_page_id != $home_page_id ){
        unset( $pages_templates['page-home.php'] );
    }

    return $pages_templates;
}

另外值得注意的是is_front_page()is_home()不同 - 請確保您使用的是正確的! (我相信你是,因為通常 IFP 是人們想要的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM