【问题标题】:Wordpress template for specific nested page特定嵌套页面的 Wordpress 模板
【发布时间】:2017-08-31 03:09:24
【问题描述】:

在 Wordpress 中,我有一个带有 slug logged-user 的页面和一个父页面 ecadmin,可以通过 URL /ecadmin/logged-user/ 访问它。

由于它有一个父页面,我(或任何其他用户)可以创建一个具有相同 slug logged-user 的页面,只要它没有嵌套在同一个父页面下。

现在的问题是,我无法在主题文件夹中创建单个页面模板 page-logged-user.php,因为该模板可以潜在地应用于任何其他名为 logged user 的页面,无论它属于哪个层次结构。

有没有办法以引用其父页面的方式命名模板文件?例如。 page-ecadmin-logged-user.php

【问题讨论】:

    标签: wordpress filenames hierarchical


    【解决方案1】:

    您希望的功能不存在,但有一种非常简单的方法可以完成您想做的事情:

    您可以创建自定义页面模板 [whatever-you-want].php 并将此注释放在标题中

    /*
    Template Name: Logged In User
    */
    

    该模板将在 Wordpress 中任何“页面”的页面属性元框中可用,但只有在该元框中选择时才会应用于给定页面。

    注意:

    默认情况下,所有内容创建者都可以访问页面属性元框。 如果您担心用户不恰当地应用该模板,您可以对非管理员的所有人隐藏“页面属性”元框:

    function remove_post_custom_fields() {
    
        if (!current_user_can( 'create_users' )){
             remove_meta_box( 'pageparentdiv' , 'post' , 'normal' ); 
        }
    }
    add_action( 'admin_menu' , 'remove_post_custom_fields' );
    

    http://www.wpbeginner.com/wp-themes/how-to-create-a-custom-page-in-wordpress/

    【讨论】:

      【解决方案2】:

      您可以尝试使用 page-$id.php,这对于该页面是唯一的。

      【讨论】:

      • 感谢您的回复,我已经想到了,但是我在开发环境中工作,当我部署时,id 在生产中永远不会相同。
      • 这很痛苦。我能想到的唯一其他解决方案是在 page-logged-user.php 文件中编写一些条件代码。如果 post_parent slug === ecadmin 然后输出登录代码,否则只显示常规页面代码。
      • 使用这种方法通常很脆弱;我建议尽可能避免它。 @ChrisAthanasiadis 有一个很好的例子来说明为什么这很糟糕。此外,如果您删除并重新制作页面,则很难重新应用相同的 ID。您要么进入数据库,要么更改不理想的主题文件。
      猜你喜欢
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 2014-09-27
      • 2018-10-04
      相关资源
      最近更新 更多