如何根据自定义元值排除帖子查询

时间:2014-08-03 作者:Swen

我正在为我的网站上用户提交的帖子建立一个审查系统。我有一个页面叫做page-review.php 其中显示“待审核”类别中最早的帖子。这是为了确保每个用户提交的内容都得到审查。此页面上一次只显示一篇文章。

$review_args = array(
    \'orderby\' => \'post_date\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => \'1\',
    \'cat\' => 22,
);

$review_query = new WP_Query($review_args);
在一篇文章被审阅后,一个新的自定义元标记将添加到名为reviewed_by. 此meta标记包含一组已审阅此帖子的用户ID。

如何使查询检查自定义元reviewed_by 是否包含当前用户的ID?如果在reviewed_by 数组,然后它将显示下一个在自定义元中没有用户ID的最旧帖子。

更新时间:

我似乎还是不能让它工作。中的内容reviewed_by 如下所示(我相信这是一个转换为字符串的数组)

a:1:{i:0;i:34;}
这是一个数组,其中我的user\\u id为34。

$review_args = array(
    \'orderby\' => \'post_date\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => \'1\',
    \'cat\' => 22,
    \'meta_query\' => array(
                        array(
                            \'key\' =>\'reviewed_by\',
                            \'value\' => $current_user_id,
                            \'compare\' => \'NOT IN\'
                        )
                    )
);

2 个回复
SO网友:Dan Bough

根据法典WP_Query, 您应该能够将一些与元相关的参数附加到args数组中(这未经测试):

$review_args = array(
    \'orderby\' => \'post_date\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => \'1\',
    \'cat\' => 22,
    \'meta_query\' => array(
                        \'key\'=>\'reviewed_by\',
                        \'value\'=> $reviewed_by_array,
                        \'compare\'=> \'NOT IN\'
                    )
);

$review_query = new WP_Query($review_args);

SO网友:Swen

我最终选择了一种更简单的方法。我创建了一个名为review_completed. 此user\\u meta包含他们已审阅的提交的post id数组。

然后我简单地在我的review_args 如下所示。

$user_review_completed = get_user_meta($current_user_id, \'review_completed\', true);

$review_args = array(
    \'orderby\' => \'post_date\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => \'1\',
    \'cat\' => 22,
    \'post__not_in\' => $user_review_completed
);

结束

相关推荐

从主题函数动态加载样式和脚本.php

我正在尝试根据模板名称动态加载样式表和脚本。所以如果我有一个名为page-signup.php 然后它将加载相应的样式表page-signup.css 和page-signup.js 如果它们存在于我的主题文件夹中的特定目录中的该页面。这是我到目前为止在函数方面的内容。我的主题的php。当css和js文件位于适当的目录中时,它当前不会加载任何样式或脚本:/** * Auto loads scripts and styles based on the page name if they exist