如何仅为帖子ID页面启用模板页面

时间:2020-05-10 作者:WolwX

我希望限制仅对帖子id x使用特定模板页的可能性

我创建了一个页面博客。php模板,我希望它只能用于帖子id 115(我博客页面的id)。

实际上,在管理中,所有帖子的模型列表本机元框上都有模板,所以也许我们可以限制或过滤这个模型列表?

我查看了这个wordpress页面,但使用slug方法无法实现我的目标=>https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-a-custom-page-template-for-one-specific-page

谢谢

2 个回复
SO网友:Himad
/**
    * Filters list of page templates for a theme.
    * @param string[]     $post_templates Array of template header names keyed by the template file name.
    * @param WP_Theme     $this           The theme object.
    * @param WP_Post|null $post           The post being edited, provided for context, or null.
    * @param string       $post_type      Post type to get the templates for.
*/

add_filter(\'theme_templates\', function($post_templates, $this, $post, $post_type){
  // Unless post is 115, filter your custom template from the dropdown.
 if(!empty($post) && $post->ID != \'150\'){
    return array_filter($post_templates, function($template_name){
        return $template_name !== \'your_template_name\';
    });
  }
  return $post_templates;
}, 20, 4);
SO网友:WolwX

我终于找到了一种方法,基于模板存储为数组的事实(如Himad所示),我们可以使用array\\u diff php function=>

 function n1_filter_template_pageblog($post_templates, $this, $post, $post_type) {
    $template_tofiltrate = \'Blog\';
    $postid_exception = \'115\';
    if(get_the_ID() != $postid_exception){
        return array_diff($post_templates, array($template_tofiltrate));
    }
        return $post_templates;
 }
 add_filter(\'theme_page_templates\', \'n1_filter_template_pageblog\', 10, 4);
这一个对我来说很好,所有页面都不会看到名为“Blog”的模板,只有postid为115的页面除外。

相关推荐

Prevent loading of functions

我使用了一个主题,其中包括名为“Sharethis”的服务的共享功能和字体真棒。据我所知,函数是从函数中的以下行加载的。php。TT\\u队列::add\\u css(数组(“//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css”);TT\\u排队::add\\u js(array(\'https://ws.sharethis.com/button/buttons.js\'));如何使用子函数(因为父函数中的更改将在更新