使用自定义分类为自定义帖子类型创建存档页面

时间:2016-07-11 作者:Austin

我有一个名为“news”的自定义帖子类型,还有一个名为“news category”的自定义分类法。我想创建一个wp查询,以返回特定“新闻类别”(例如“press”)的所有“新闻”帖子。有没有一种通用的方法来写这篇文章,这样我就不需要为每个“新闻类别”写一篇了?

我认为这与

$args = array(
    \'post_type\' => \'news\',
    \'news category\' => *GET THE LABEL FROM THE PAGE SLUG SOMEHOW*
);
$query = new WP_Query( $args );
编辑:这是我的函数代码。php文件

function my_custom_post_news() {
$labels = array(
    \'name\'               => _x( \'News\', \'post type general name\' ),
    \'singular_name\'      => _x( \'News\', \'post type singular name\' ),
    \'add_new\'            => _x( \'Add New\', \'book\' ),
    \'add_new_item\'       => __( \'Add New News\' ),
    \'edit_item\'          => __( \'Edit News\' ),
    \'new_item\'           => __( \'New News\' ),
    \'all_items\'          => __( \'All News\' ),
    \'view_item\'          => __( \'View News\' ),
    \'search_items\'       => __( \'Search News\' ),
    \'not_found\'          => __( \'No News found\' ),
    \'not_found_in_trash\' => __( \'No News found in the Trash\' ), 
    \'parent_item_colon\'  => \'\',
    \'menu_name\'          => \'News\'
);
$args = array(
        \'labels\'        => $labels,
        \'description\'   => \'Holds our news and news specific data\',
        \'public\'        => true,
        \'menu_position\' => 5,
        \'supports\'      => array( \'title\', \'editor\', \'thumbnail\', \'excerpt\', \'comments\' ),
        \'has_archive\'   => true,
    );
    register_post_type( \'news\', $args );    
}
add_action( \'init\', \'my_custom_post_news\' );

function mav_taxonomies_news() {
    $labels = array(
        \'name\'              => _x( \'News Categories\', \'taxonomy general name\' ),
        \'singular_name\'     => _x( \'News Category\', \'taxonomy singular name\' ),
        \'search_items\'      => __( \'Search News Categories\' ),
        \'all_items\'         => __( \'All News Categories\' ),
        \'parent_item\'       => __( \'Parent News Category\' ),
        \'parent_item_colon\' => __( \'Parent News Category:\' ),
        \'edit_item\'         => __( \'Edit News Category\' ), 
        \'update_item\'       => __( \'Update News Category\' ),
        \'add_new_item\'      => __( \'Add New News Category\' ),
        \'new_item_name\'     => __( \'New News Category\' ),
        \'menu_name\'         => __( \'News Categories\' ),
    );
    $args = array(
        \'labels\' => $labels,
        \'hierarchical\' => true,
        \'has_archive\'   => true,
    );
    register_taxonomy( \'news_category\', \'news\', $args );
    register_taxonomy_for_object_type( \'news_category\', \'news\' );
}
add_action( \'init\', \'mav_taxonomies_news\', 0 );
/news 工程和/news/sample-news-article 作品然而news_category/events给了我所有news 项目,而不仅仅是event 项目。

编辑:将“标签”更改为“新闻类别”

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

好消息-你没什么需要做的。WordPress为您提供了开箱即用的功能,前提是您已经为此设置了帖子类型和分类法。

您应该可以访问您的帖子http://example.com/labels/events, 检查后:

你的帖子类型是publicly_queryable (或public 参数或publicly_queryable 参数由register_post_type() 调用),

  • 您的分类法slug没有设置为不同的内容(在rewrite -> slug 你的论点register_taxonomy() 调用),并且自注册帖子类型和分类法后,您的永久链接已被刷新(要刷新永久链接,只需访问设置->永久链接,然后单击保存)
  • 您可能还需要研究其他一些事情,包括:

    rewrite -> with_front 参数发送到register_taxonomy(), 它定义了是否应该包括默认的永久链接库(例如,有些人在所有永久链接之前使用“/blog”),

  • 您或您正在运行的任何插件是否设置了任何其他自定义重写(即调用add_rewrite_rule()) - 这些可能会改变默认行为,并且strongly recommended 致电至register_taxonomy_for_object_type() 已在调用register_taxonomy(),init 行动
  • 如果这对您不起作用,可能还有另一个参数正在改变默认行为;在这种情况下,您可以随时编辑您的问题以添加您的帖子类型&;分类注册码。