【问题标题】:Can I create custom post type archives with meta values rather than categories?我可以使用元值而不是类别创建自定义帖子类型存档吗?
【发布时间】:2018-08-13 09:06:49
【问题描述】:

与通常使用类别的 Wordpress 博客存档不同,我有一个自定义帖子类型,它使用全局元键和值将这些帖子与我网站中的页面链接。

我想创建一个档案,就像博客上的类别档案一样,但要使用这些元值。

使用自定义 WP 查询并保持分页,同时获得正确的存档 URL 的最佳方法是什么?

function bv_patient_stories_init() {
        register_post_type('patient-story', array(
            'labels'          => array(
                'name'               => 'Patient Stories',
                'singular_name'      => 'Patient story',
                'add_new'            => 'Add new',
                'add_new_item'       => 'Add a new Patient Story',
                'edit_item'          => 'Edit Patient Story',
                'new_item'           => 'New Patient Stories',
                'all_items'          => 'All Patient Stories',
                'view_item'          => 'View Patient Story',
                'search_items'       => 'Search Patient Stories',
                'not_found'          => 'No Patient Stories have been added',
                'not_found_in_trash' => 'No Patient Stories in bin',
                'parent_item_colon'  => '',
                'menu_name'          => 'Patient Stories'
            ),
            'description'     => 'Patient case study',
            'public'          => true,
            'show_ui'         => true,
            'show_in_menu'    => true,
            'query_var'       => true,
            'rewrite'         => array('slug' => 'patient-stories', 'with_front' => false),
            'capability_type' => 'post',
            'has_archive'     => true,
            'hierarchical'    => false,
            'menu_position'   => 57,
            'supports'        => array('title', 'revisions', 'thumbnail', 'excerpt', 'custom-fields', 'comments'),
            'menu_icon'       => 'dashicons-id',
        ));
    }

【问题讨论】:

  • 那么您想创建具有特定元键值的页面吗?比如ass获取所有键值为X的页面?
  • @OrlandoP。不,那不是我想做的。
  • 存档不就是这样吗?带有特定类别帖子的页面。在这种情况下,您希望页面上的这些帖子仅具有某些元键值对。

标签: php wordpress custom-post-type archive


【解决方案1】:
function fwp_home_custom_query( $query ) {
   //check if you are working on archive query
   if ( $query->is_post_type_archive($post_type) ) {

    //the key and value pairs you want
    $meta_query = array(
             array(
                'key'=>'$your_key',
                'value'=>'$value',
                'compare'=>'=',
             ),
    );

    //updating the query
    $query->set( 'orderby', $meta_key);
    $query->set( 'order', 'ASC' );
    $query->set( 'meta_query',$meta_query );

   }
}

add_filter( 'pre_get_posts', 'fwp_home_custom_query

至于 url 结构,您还需要应用过滤器。

【讨论】:

  • 我想为我的自定义帖子类型保留我现有的存档模板,这不需要对 WP Query 进行任何更改,但我想插入一个钩子以便能够在页面之前应用 meta_query已加载。我想我想使用 pre_get_posts,但它不会改变输出循环。
  • @Lee 无论你修改查询的方式
猜你喜欢
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
相关资源
最近更新 更多