已解析-类别-slug.php在WordPress迁移后不工作

时间:2016-10-07 作者:Tuux

我有一个问题,几个小时前我正在网上搜索,但现在无法解决。欢迎任何想法或线索。。。

我正在尝试迁移使用插件的WordPress站点(CCTM (没有更多开发活动的)注册自定义帖子类型和字段“recetas”,这些字段在其帖子中使用原生wordpress类别“recetas”。

在新构建中,我手动在functions.php 并通过wordpress的原生XML导入工具导入内容。

add_action( \'init\', \'codex_book_init\' );
function codex_book_init() {
    $labels = array(
        \'name\'               => _x( \'Recetas\'),
        \'singular_name\'      => _x( \'Receta\'),
        \'menu_name\'          => _x( \'Recetas\'),
        \'name_admin_bar\'     => _x( \'Recetas\'),
        \'add_new\'            => _x( \'Agregar Nueva\'),
        \'add_new_item\'       => __( \'Agregar Nueva Receta\'),
        \'new_item\'           => __( \'Nueva Receta\'),
        \'edit_item\'          => __( \'Editar Receta\'),
        \'view_item\'          => __( \'Ver Receta\'),
        \'all_items\'          => __( \'Todas las Recetas\'),
        \'search_items\'       => __( \'Buscar Receta\'),
        \'parent_item_colon\'  => __( \'Receta Padre:\'),
        \'not_found\'          => __( \'Sin Recetas encontradas.\'),
        \'not_found_in_trash\' => __( \'Sin Recetas encontradas en papelera.\')
    );
    $args = array(
        \'labels\'             => $labels,
        \'description\'        => __( \'Recetas\'),
        \'public\'             => true,
        \'publicly_queryable\' => true,
        \'show_ui\'            => true,
        \'show_in_menu\'       => true,
        \'query_var\'          => true,
        \'rewrite\'            => array( \'slug\' => \'recetas\'),
        \'capability_type\'    => \'post\',
        \'has_archive\'        => true,
        \'hierarchical\'       => true,
        \'menu_position\'      => 5,
        \'menu_icon\'          => \'dashicons-admin-post\',
        \'taxonomies\'         => array( \'category\' ),
        \'supports\'           => array( \'title\', \'thumbnail\', \'excerpt\', \'editor\', \'comments\')
    );
    register_post_type( \'recetas\', $args ); 
}
所有内容在自定义帖子类型的单个文章和新循环中都正常WP_Query( array(\'posts_type\'=> \'recetas\') 内容也很好。但是问题出现在类别模板(category recetas.php)中,该模板用于获取带有默认wordpress循环的帖子类型文章<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>. 这很简单,不起作用,没有一个帖子来自“recetas”类别。

我尝试注册自定义分类法“recetas”,尝试category-id.php,尝试归档slug。php,尝试重新保存永久链接,但没有任何效果。。。

任何想法都是非常有用的。谢谢

Resolved 感谢@Max Yudin-他的回答解决了这个问题

1 个回复
最合适的回答,由SO网友:Max Yudin 整理而成

Category 是的内置分类法posts 仅限,非自定义帖子类型。所以你必须打电话给pre_get_posts

此挂钩在创建查询变量对象之后,但在实际查询运行之前调用。

将以下代码置于functions.php 或自定义插件。但未经测试。

<?php
add_filter(\'pre_get_posts\', \'query_post_type\');
function query_post_type($query) {
    if( is_category() ) {
        $post_type = get_query_var(\'post_type\');
        if(!$post_type) {
            $post_type = array(\'nav_menu_item\', \'post\', \'recetas\'); // don\'t forget nav_menu_item to allow menus to work!
        }
        $query->set(\'post_type\', $post_type);
        return $query;
        }
}
这是从here (wpneyer.com)。

如果这不起作用,请使用上面链接中的原始代码。