按帖子元数据过滤帖子

时间:2012-04-10 作者:porton

我想以这样一种方式过滤帖子,即get_post_meta($post->ID, "project_cat", true) (它返回一个post ID)等于我指定的值,如图所示。

有什么办法吗?

我对与兼容的方式特别感兴趣WP-Paginate plugin.

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

这个WP_Query 对象接受post元参数。一般来说,您需要执行以下操作:

  $my_query = new WP_Query( 
    array(
      \'post_type\' => \'post\',
      \'meta_query\' => array(
        array(
          \'key\' => \'project_cat\',
          \'value\' => \'my-value\',
        )
      ),

        // Other query properties
    ) 
  );
其中,“我的值”是您的“指定值”。

Example usage:

  add_action( \'pre_get_posts\' , \'my_pre_get_posts\' );

  function my_pre_get_posts( $query ) {

    // Check this is main query and other conditionals as needed
    if( $query->is_main_query() ) {
        $query->set( 
          \'meta_query\', 
          array( 
            array(
              \'key\' => \'project_cat\',
              \'value\' => \'my-value\'
            )
          )
        );
    }

  }
请参见WP_Query, pre_get_posts. 您可以使用所有条件。目前,这会在每个主查询上运行—这可能是您不想要的。

或者,您可以使用query_posts (一种更简单但效率更低的方法)仅为模板中的特定实例更改查询。

SO网友:Liz Eipe C

您可以根据元值过滤帖子,并在cms页面上显示帖子。

\'meta_query\' => array(
        array(
            \'key\'     => \'front_page\',
            \'value\'   => \'yes\',
            \'compare\' => \'LIKE\',
        ))
请参阅教程以了解分步说明

http://www.pearlbells.co.uk/filter-posts-custom-fields-wp_query/

结束

相关推荐