如何在WP查询中对术语进行逻辑或运算?

时间:2020-07-09 作者:Mark Didle

我有一个隐藏其他用户图像的代码。但我需要确保用户可以看到他们的图像或来自类别的图像。

function my_files_only( $wp_query ) {

    if ( ! $_POST["action"] == "attachment" )
    {
            return;
    }

    if ( current_user_can( \'image_verified\' ) )
    {
            return;
    }

    global $current_user;
    $wp_query->set( \'author\', "$current_user->id"); }
    add_filter(\'parse_query\', \'my_files_only\' );
您还可以添加:$wp\\u query->;设置(“mlo类别”,“许可证”);

但是选择逻辑将等于和。因此,我们需要规定:关系或。如何在代码中满足这样的请求?

1 个回复
SO网友:mozboz

由于WP\\u Query在本机上不允许您执行逻辑或操作(除了对元数据),因此一个选项是只运行两个查询来获取所有的Post ID,然后将它们传递给一个新的WP\\u查询,您可以将其用于循环。这相当长,需要3个查询,因此可能有人会知道一个较短的解决方案

此代码取自示例here, 未经测试。您可能需要根据您的用例对其进行调整,特别是我不确定“mlo类别”是什么,因此您可能需要将其转换为更好的WP_Query parameter

    $postsCurrentUser = get_posts(array(
        \'author\', "$current_user->id"); 
        ));
        
    $postsCategory = get_posts(array(
        \'mlo-category\', "license"
        ));

    $mergedPosts = array_merge( $postsCurrentUser, $postsCategory ); //combine queries

    $postIds = array();

    // Find any post ID that is in one array or the other, don\'t include any twice
    foreach( $mergedPosts as $item ) {
        if (!in_array($item->ID, $postIds)) {
            $postIds[]=$item->ID;
        }
    }

    $args = array(\'post__in\' => $postIds);

    $q = WP_Query($args);
如果这符合你的要求,请告诉我

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post