如何根据meta_Value选择来显示或隐藏帖子?

时间:2013-04-02 作者:Nima Moradi

我如何根据后端的meta\\u值选择来隐藏帖子。

通常的方法是将帖子状态从Publish更改为Draft,但我希望它基于下拉选择工作。

meta\\u密钥为current_status 和meta\\u值为的下拉框activeleased.

如果active 选择后,将显示帖子,并且leased 会隐藏帖子。

关于如何以干净的方式做到这一点,有什么想法吗?

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

使用pre_get_posts 更改主查询的操作meta_query 参数仅用于选择具有active current_status.

此示例适用于您的主页。看见Conditional Tags 了解如何确定何时运行其他类型的查询。

function wpa_current_status( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $meta_query = array(
            array(
                \'key\' => \'current_status\',
                \'value\' => \'active\',
                \'compare\' => \'=\'
            )
        );
        $query->set( \'meta_query\', $meta_query );
    }
}
add_action( \'pre_get_posts\', \'wpa_current_status\' );
编辑-或在自定义查询中,设置meta_query 直接参数:

$args = array(
    \'post_type\' => \'property\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        array(
            \'key\' => \'current_status\',
            \'value\' => \'active\',
            \'compare\' => \'=\'
        )
    )
);

$properties = new WP_Query( $args );

SO网友:Marco Berrocal

在循环中,提取值。

一旦你有了它,做一个简单的if 测试是否已租用。如果是,你只要做一个continue 通过PHP。

结束

相关推荐

posts stuck as drafts

我最近看到一个运行WP电子商务的网站上出现了一个新的bug。新产品(或某些现有产品)被困为“草稿”。一旦它们被标记为草稿,单击“发布”就没有任何好处,让产品公开访问的唯一方法是直接编辑MySQL数据库中的条目。UPDATED进一步调查表明,这不是一个wp电子商务问题-它影响到所有帖子。切换到twentyten主题解决了这个问题,因此很明显,无法发布的问题一定存在于我使用的自定义主题中。因为这是我自己的主题,我想我应该受到责备;-)错误报告中提到了一个错误调用的register\\u script()函数,