我是否可以创建一个页面模板,使用一次,然后隐藏/删除再次使用它的选项?

时间:2012-04-27 作者:Kirkland

我正在从事一个WP主题/项目,其中包括几个自定义页面模板,每个模板只使用一次。例如,有一个带有地图和搜索表单的页面,用于查找地图上的内容。很明显,地图页面需要一个唯一的页面模板,但该模板永远不会用于任何其他页面。我想从“模板”下拉菜单中隐藏或删除此页面模板,因此当客户端选择页面模板时,他们只会看到应该从中选择的选项。有人知道如何做到这一点,或者我应该从一个完全不同的角度来处理这个问题吗?

谢谢Kirkland

++++++++++++++++

更新-解决方案:

对于我只想使用一次的每个页面模板(即:在安装过程中,在客户端访问之前),我只是删除了。。。

/*
Template Name: NAME_HERE
*/
这样在添加新页面时就不会显示为选项。然后我替换了页面中的所有内容。php与此。。。

if ( is_front_page() ) { include(\'page-home.php\'); }
elseif ( is_page(22) ) { include(\'page-something.php\'); }
elseif ( is_page(48) ) { include(\'page-whatever.php\'); }
else{ include(\'page-default.php\'); }
里面的一切page.php 移动到page-default.php. 或者你可以把一切都放在else 结尾的语句。不管怎样。

这对我来说很有用,因为我将为客户机进行设置,所以在将此项目交给他们之前,我将创建“一次性”页面-我将知道页面ID。

顺便提一下您不需要保留命名方案page-XXX.php 这样才能起作用。我这样做只是为了更容易地对他们进行分组。

我在添加页面时希望客户端能够选择的页面中留下了“模板名称”注释(例如:“全宽”page-full.php) 并且没有添加if条件或将其包括在page.php.

2 个回复
最合适的回答,由SO网友:Milo 整理而成

如果没有特定的模板,页面就无法工作,我只需要删除他们选择模板的需要。滤器template_include 并根据请求的页面选择模板:

function wpse50455_template_include( $template ) {
    // check if it\'s a page
    if ( is_page() ):
        $this_page_id = get_query_var( \'page_id\' );
        // check for presence of meta data to determine what template you need
        // return the desired template if required
        return get_stylesheet_directory_uri() . \'/my-special-template.php\';
    endif;

    return $template;
}
add_filter( \'template_include\', \'wpse50455_template_include\' );

SO网友:Sandra

WordPress已经有一个内置的页面模板层次结构来处理这种情况。你不需要弄脏你的页面。php代码或添加过滤器,只需遵循层次结构的命名约定:

自定义模板文件:指定给页面的页面模板。请参见get\\u page\\u templates()http://codex.wordpress.org/Template_Hierarchy

最灵活的方法是使用页面Slug。创建模板,例如:page my slug。然后用我的slug创建一个新页面。

在您的示例中,“翻页”。WordPress将自动为带有slug“something”的页面加载php。如果要使用页面ID,请从示例中创建“page-22”。php’作为您的模板。

结束

相关推荐

我是否可以创建一个页面模板,使用一次,然后隐藏/删除再次使用它的选项? - 小码农CODE - 行之有效找到问题解决它

我是否可以创建一个页面模板,使用一次,然后隐藏/删除再次使用它的选项?

时间:2012-04-27 作者:Kirkland

我正在从事一个WP主题/项目,其中包括几个自定义页面模板,每个模板只使用一次。例如,有一个带有地图和搜索表单的页面,用于查找地图上的内容。很明显,地图页面需要一个唯一的页面模板,但该模板永远不会用于任何其他页面。我想从“模板”下拉菜单中隐藏或删除此页面模板,因此当客户端选择页面模板时,他们只会看到应该从中选择的选项。有人知道如何做到这一点,或者我应该从一个完全不同的角度来处理这个问题吗?

谢谢Kirkland

++++++++++++++++

更新-解决方案:

对于我只想使用一次的每个页面模板(即:在安装过程中,在客户端访问之前),我只是删除了。。。

/*
Template Name: NAME_HERE
*/
这样在添加新页面时就不会显示为选项。然后我替换了页面中的所有内容。php与此。。。

if ( is_front_page() ) { include(\'page-home.php\'); }
elseif ( is_page(22) ) { include(\'page-something.php\'); }
elseif ( is_page(48) ) { include(\'page-whatever.php\'); }
else{ include(\'page-default.php\'); }
里面的一切page.php 移动到page-default.php. 或者你可以把一切都放在else 结尾的语句。不管怎样。

这对我来说很有用,因为我将为客户机进行设置,所以在将此项目交给他们之前,我将创建“一次性”页面-我将知道页面ID。

顺便提一下您不需要保留命名方案page-XXX.php 这样才能起作用。我这样做只是为了更容易地对他们进行分组。

我在添加页面时希望客户端能够选择的页面中留下了“模板名称”注释(例如:“全宽”page-full.php) 并且没有添加if条件或将其包括在page.php.

2 个回复
最合适的回答,由SO网友:Milo 整理而成

如果没有特定的模板,页面就无法工作,我只需要删除他们选择模板的需要。滤器template_include 并根据请求的页面选择模板:

function wpse50455_template_include( $template ) {
    // check if it\'s a page
    if ( is_page() ):
        $this_page_id = get_query_var( \'page_id\' );
        // check for presence of meta data to determine what template you need
        // return the desired template if required
        return get_stylesheet_directory_uri() . \'/my-special-template.php\';
    endif;

    return $template;
}
add_filter( \'template_include\', \'wpse50455_template_include\' );

SO网友:Sandra

WordPress已经有一个内置的页面模板层次结构来处理这种情况。你不需要弄脏你的页面。php代码或添加过滤器,只需遵循层次结构的命名约定:

自定义模板文件:指定给页面的页面模板。请参见get\\u page\\u templates()http://codex.wordpress.org/Template_Hierarchy

最灵活的方法是使用页面Slug。创建模板,例如:page my slug。然后用我的slug创建一个新页面。

在您的示例中,“翻页”。WordPress将自动为带有slug“something”的页面加载php。如果要使用页面ID,请从示例中创建“page-22”。php’作为您的模板。

相关推荐