当前位置: 首页 > 知识库问答 >
问题:

Wordpress为自定义帖子类型归档页面选择了错误的模板

龙嘉玉
2023-03-14

我已注册了以下两种自定义帖子类型:

function dogs() {

    $labels = array(
        'name' => 'Dogs'
    );

    $args = array(
        'labels' => $labels, 
        'public' => true,
        'has_archive' => true,            
        'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' )
    );

    register_post_type( 'dog', $args );
}

function cats() {

    $labels = array(
        'name' => 'Cats'
    );

    $args = array(
        'labels' => $labels, 
        'public' => true,
        'has_archive' => true,
        'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' )
    );

    register_post_type( 'cat', $args );
} 

在狗帖子类型(mysite.com/dog)的归档页面中,我想显示同时使用狗和猫帖子类型的帖子。所以我创建了一个名为archive-dog.php的自定义模板,并像这样更改主查询:

add_action( 'pre_get_posts', 'cats_and_dogs' ) );

function cats_and_dogs( $query ) {
    if( ! is_admin() && is_post_type_archive( 'dog' ) ) {
        if( $query->is_main_query() ) {  
            $query->set( 'post_type', array( 'dog', 'cat'  ) );
            $query->set( 'posts_per_page', 4 );
            $query->set( 'post_status', 'publish' );  
            $query->set( 'post__not_in', get_option( 'sticky_posts' ) ); 
        } 
    }         
}

当我访问mysite.com/dog时,我希望Wordpress会自动选择archive dog.php并显示“dog”和“cat”帖子。相反,虽然它同时显示“dog”和“cat”帖子,但它不会选择archive dog.php,而是返回到archive.php。如果我从修改过的主查询中删除“cat”post类型,只留下“dog”,那么一切都正常。如何同时拥有帖子类型和自定义存档模板?

共有1个答案

茅秦斩
2023-03-14

将以下代码放在functions.php中,即可欣赏:

add_filter( 'template_include', 'use_archive_dog', 99 );
function use_archive_dog( $template ) {

    if ( is_post_type_archive('dog')  ) {
        $new_template = locate_template( array( 'archive-dog.php' ) );
        if ( '' != $new_template ) {
            return $new_template ;
        }
    }

    return $template;
}
 类似资料:
  • 在我的Wordpress自定义主题中,一个分页,在加载上面1的页面时给出404错误。我已经检查了Permalink和其他东西,但没有scuccess。 请帮我脱掉。 这是我的密码。

  • 有人能帮我解决这个该死的pagenavi问题吗?我一直在尝试在stackoverflow和其他论坛上找到的所有可能的解决方案,但当我想访问pagenavi的第二页时,仍然会遇到404错误。 我尽可能地精简了代码。这应该管用,对吧? 更多信息:我正在使用一个自定义页面模板,网站上不同的自定义帖子类型,还有一个博客,其中包括panenavi(确实有效)。我也尝试重置永久链接每次我改变代码,也没有帮助。

  • 我创建了一个名为制造商的自定义帖子类型,并添加了大量帖子和类别。单个帖子页面工作,但类别/存档页面不显示任何帖子。 制造商被分成不同的类别,我需要显示每个类别中所有帖子的存档。我去工厂的时候 http://localhost/category/manufactures/ge-speedtronic/ 这就是令人困惑的地方。我为自定义帖子类型“制造商”使用的类别也显示在我的其他自定义帖子类型和默认帖

  • 我试图为自定义帖子类型创建一个页面,但我无法真正实现。以下是我正在尝试的全部内容- 自定义帖子类型注册的functions.php片段 我使用名为单Tutorial.php的模板为这个自定义帖子类型模板。此外,在我的帖子显示中,我使用the_permalink()链接到帖子。 现在考虑一个标题为Test3的帖子现在在我的仪表板上,我看到它的PyMalink AS。 当我回显我得到的_permali

  • 我是个新手,我正在努力发展我的第一个主题。 不幸的是,我遇到了一些麻烦与自定义后类型(项目)。我已经尝试了关于这个主题的不同组合(query_post、WP_Query、同花永久链接等)。),但似乎没有一个适合我。 我尝试使用插件wp_pagenavi。 这是我的注册帖子类型,在函数中。php: 以下是模板中列出我的自定义帖子类型“projet”的代码: 目前,这段代码列出了2最后一个自定义帖子类

  • 我有一个自定义的帖子类型设置,有许多类别和子类别。 我试图做的是创建一个页面,显示特定类别中的所有帖子,并使用一个菜单列出所有类别子类别,以便可以过滤帖子。 我已尝试复制存档模板并将其重命名为分类法-(我的自定义分类法)。php,如果我转到slug,它会显示某些帖子,并使用