查询作者为0时返回的所有帖子

时间:2020-06-15 作者:PeterB

我在尝试按作者查询一些帖子时遇到了一个小问题。我有活动和注册。目前我有4个注册,都是由User2创建的,wp admin正确显示了这一点。如果我在用户登录的情况下运行以下代码,它就会工作。User2显示全部,User1显示无。但是,如果没有人登录,它将返回所有注册。user\\u id显示为0,因此它不会找到任何注册,但会找到所有注册,包括用户1和用户2的注册。无论怎样,我都可以停止此操作,而不必每次都检查Is\\u user\\u logged\\u()。

谢谢

$reg_count=0;
    //if (is_user_logged_in()){
        echo "looking for registrations with author id of " . get_current_user_id();
        $registrations = new WP_Query(Array(
            \'posts_per_page\' => -1,
            \'post_type\' => "registration",
            \'author\' => get_current_user_id(),
            \'meta_key\' => \'first_name\',
            \'orderby\' => \'meta_value\',
            \'order\' => \'ASC\',
            \'meta_query\' => array(
            array(
                \'key\'=> \'event_id\',
                \'compare\' => \'LIKE\',
                \'value\' => \'"\' . get_the_id() . \'"\'
            )
            )
        ));
        
        $reg_count = $registrations->found_posts;
        echo "found " . $reg_count . "  registrations wih author id of " . get_current_user_id();
    //}

?>

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

欢迎使用WPSE。您要防止的条件是ID为0,因此仅在不允许的情况下运行查询。

此外,请保持干燥-不要重复。而不是打电话get_current_user_id() 多次调用一次并存储它。

$reg_count=  0;
$user_id = get_current_user_id();
if ( 0 !== $user_id ) {

    echo "looking for registrations with author id of $user_id";  //PHP will output var value in double quotes

    $registrations = new WP_Query(
    array(
        \'posts_per_page\' => -1,
        \'post_type\' => "registration",
        \'author\' => $user_id,
        \'meta_key\' => \'first_name\',
        \'orderby\' => \'meta_value\',
        \'order\' => \'ASC\',
        \'meta_query\' => array(
            array(
               \'key\' => \'event_id\',
               \'compare\' => \'LIKE\',
               \'value\' => \'"\' . get_the_id() . \'"\' //Why not just get_the_id()?
            ),
         ),
     ));
    
    echo "found $registrations->found_posts registrations with author id of $user_id";
}
注意:不在我的办公桌上-上面的代码未经测试。如果有问题,请在此处进行评论。

编辑:添加了缺少的右括号IF 陈述

SO网友:dnwjn

author 的值0 导致查询跳过该参数。看见this question 特别是this answer.

检查用户是否登录仍然是最好的选择,因为这样可以防止不必要的数据库查询运行。

相关推荐

Wp-query and column blocks

也许这要求太高了,但新的块提供了一种简单的方法来添加响应良好的列。ie您只需将图像拇指放入列块中,它们就可以在移动和桌面上完美工作。有没有办法让WP查询输出the_post_thumbnail 如我在3列行中的参数(12篇x类已发布帖子)所述?