WP会覆盖我的setuppostdata()设置

时间:2017-06-01 作者:Picard

我正试图在一个(非常)自定义的URL下显示一个我选择的模板中的帖子。在这个例子中,我的帖子ID是1008,我的模板名是“/单曲/演讲”。php’。

Im未来将检查URL,并在执行操作时添加条件-现在对于测试,条件只是if (1) - 对于测试,它适用于所有URL。

当我输入自定义URL时,将检索并显示模板,没有任何问题,但数据有问题。

在我检查$post变量时,函数中有一些默认值$post object assigned-假设其ID==488,所以我试图让Wordpress使用我需要的帖子,所以我get_post() 以及setup_postdata() 分配路线codex 说应该行,但不行。

我的/singles/lecture.php 返回初始“默认”帖子(即488)的数据。

add_filter(\'template_include\', \'my_custom_urls\');
function my_custom_urls($original_template) {
    global $post;

    if (1) {
        // second correct but not working alternative
        // $post = get_post(1008);
        // setup_postdata($post);

        $post_object  = get_post(1008);
        setup_postdata($GLOBALS[\'post\'] =& $post_object);

        return get_template_directory() . \'/singles/lecture.php\';
    } else {
        return $original_template;
    }
}
我做错了什么?如何以这种方式设置$post变量,使其可用于我的模板。

1 个回复
SO网友:WebElaine

所有CPT“演讲”帖子都应该使用此模板吗?如果是这样,只需将您的文件重命名为single Teach。php并将其放置在主题的根目录中,由于其模板层次结构,WP将自动使用它。

如果您试图将此自定义模板分配给手工挑选的页面,无论您在哪里注册帖子类型,请添加对“页面属性”的支持,并通过在顶部添加注释将模板设置为自定义模板。

CPT:

register_post_type(\'lecture\'),
    array(...
        ...
        \'supports\' => array(\'title\', \'editor\', \'page-attributes\'),
);
模板:

<?php
/*
 * Template Name: Customized Lecture
 */
...
您可能需要注销CPT,然后使用此新代码重新注册,以便WP识别新属性。一旦您的CPT具有“页面属性”,您将在后期编辑屏幕上看到一个新的下拉列表,就像您在页面上看到的一样,允许您选择模板。然后,您可以根据文件顶部注释中使用的任何名称选择模板。

结束

相关推荐

Post Templates and Post ID's

我正在尝试为单个帖子使用单个模板(我有一个自定义模板)。但由于某种原因,我的帖子被覆盖,而不是显示新数据。这是我现在的设置<div class=\"details\"> <?php global $post; $category_id=get_the_category($post->ID); $announcements = new WP_Query(); $announcements->query(\'showposts=1&a