Php 如何查询以获取当前自定义帖子’;在一个单独的贴子页面中的值是多少?

Php 如何查询以获取当前自定义帖子’;在一个单独的贴子页面中的值是多少?,php,mysql,wordpress,Php,Mysql,Wordpress,我把下面的代码放在一个单独的帖子页面中 问题是它显示的是当前帖子的正确标题,但计数不正确。 当实际计数为1时,它显示计数0 当前帖子已购买=yes且首次提交=yest,因此应显示1。 我trid'post\u parent'=>获取\u ID(),而不是'title'=>获取\u title(),以及'posts\u per\u page'=>1,但仍然显示计数0 你能帮我更正代码吗 $info_args = [ 'author' => get_current_u

我把下面的代码放在一个单独的帖子页面中
问题是它显示的是当前帖子的正确标题,但计数不正确。
当实际计数为1时,它显示计数0
当前帖子已购买=yes且首次提交=yest,因此应显示1。
我trid'post\u parent'=>获取\u ID(),而不是'title'=>获取\u title(),以及'posts\u per\u page'=>1,但仍然显示计数0
你能帮我更正代码吗

$info_args = [
    'author'          => get_current_user_id(),
    'title'           => get_the_title(),
    'posts_per_page'   => -1, 
    'post_type'       => 'infosubmission',
    'post_status'     => 'publish',
    'meta_query'      => array(
           array(
               'key' => 'purchased',
               'value' => 'yes',
               'compare' => '=',
               'key' => 'firstsubmission',
               'value' => 'yes',
               'compare' => '=',           
           )
       )
];

$info_info_posts = get_posts($info_args);
$info_info_count = count($info_info_posts);

echo 'Title: ' . get_the_title() .'<br>';
echo 'Count:' .$info_info_count ;
$info\u args=[
'author'=>get_current_user_id(),
'title'=>获取标题(),
“每页帖子数”=>-1,
“发布类型”=>“信息提交”,
“发布状态”=>“发布”,
“元查询”=>数组(
排列(
“密钥”=>“已购买”,
“值”=>“是”,
“比较”=>“=”,
'key'=>'firstsubmission',
“值”=>“是”,
“比较”=>“=”,
)
)
];
$info\u info\u posts=get\u posts($info\u args);
$info\u info\u count=count($info\u info\u posts);
回显“标题:”。获取标题();
回显“计数:”。$info\u info\u计数;

谢谢。

您的元查询错误您必须为每个元键创建单独的数组。检查下面的代码

$info_args = [
    'author'         => get_current_user_id(),
    'title'          => get_the_title(),
    'posts_per_page' => -1, 
    'post_type'      => 'infosubmission',
    'post_status'    => 'publish',
    'meta_query'     => array(
        array(
            'key'     => 'purchased',
            'value'   => 'yes',
            'compare' => '=',
        ),
        array(       
            'key'     => 'firstsubmission',
            'value'   => 'yes',
            'compare' => '=',           
        )
    )
];

$info_info_posts = get_posts($info_args);
$info_info_count = count($info_info_posts);

echo 'Title: ' . get_the_title() .'<br>';
echo 'Count:' .$info_info_count ;
$info\u args=[
'author'=>get_current_user_id(),
'title'=>获取标题(),
“每页帖子数”=>-1,
“发布类型”=>“信息提交”,
“发布状态”=>“发布”,
“元查询”=>数组(
排列(
“密钥”=>“已购买”,
“值”=>“是”,
“比较”=>“=”,
),
数组(
'key'=>'firstsubmission',
“值”=>“是”,
“比较”=>“=”,
)
)
];
$info\u info\u posts=get\u posts($info\u args);
$info\u info\u count=count($info\u info\u posts);
回显“标题:”。获取标题();
回显“计数:”。$info\u info\u计数;

如果您只是简单地尝试获取属于某个自定义帖子类型的所有帖子的计数,只需使用此选项即可,因为它的速度要快得多:

$info_info_count = wp_count_posts( 'infosubmission' )->publish;
不幸的是,此函数不允许您按post状态之外的任何内容进行筛选,因此如果需要,则需要创建辅助查询

首先,您不能通过标题进行查询,因此请将其忽略(这将限制您的查询仅限于当前帖子/页面)。其次,您的
meta_查询
参数的格式不适合多个字段。请尝试以下方法:

$info_args = [
    'author'          => get_current_user_id(),
    'posts_per_page'   => -1, 
    'post_type'       => 'infosubmission',
    'post_status'     => 'publish',
    'meta_query'      => array(
           'relation' => 'AND',
           array(
               'key' => 'purchased',
               'value' => 'yes',
               // 'compare' is '=' by default, so not needed here.
           ),
           array(
               'key' => 'firstsubmission',
               'value' => 'yes',          
           ),
       ),
];

$info_info_posts = get_posts( $info_args );
$info_info_count = count( $info_info_posts );

echo 'Title: ' . get_the_title() . '<br>';
echo 'Count: ' . $info_info_count;

关于多个查询的注意事项:

注意:如果在查询中使用
wp\u post()
,则需要在之后运行
wp\u reset\u postdata()
,以使模板标记再次使用主查询的当前post


谢谢你的帮助Bhautik:)我的回答有帮助吗?事实上它不起作用,但仍然感谢你的评论:)哦,我明白了。非常感谢您的详细解释。这是一个大插曲
$info_posts = new WP_Query( $info_args );
$count_info_posts = $info_posts_query->found_posts;

echo 'Count: ' . $count_info_posts . '<br>';

//Start The Loop
while ( $info_posts->have_posts() ) : $info_posts->the_post();
    echo 'Title: ' . get_the_title() .'<br>';
    // Do anything else you'd like with each post's data here.
endwhile;

// Restore original Post Data
wp_reset_postdata();