WordPress查询返回意外结果

时间:2018-07-06 作者:Randal Oulton

以下查询返回意外结果。它将返回最近创建的24个页面的结果,其中没有一个页面的自定义字段名为“calmonthname”,其中包含文本值“July”(calmonthname是一个自定义选择字段,允许对月份名称进行单值文本选择)。

有人能指出我在措辞上的任何明显问题吗?

<?php

$args  = array(
    \'numberposts\' => 1,
    \'post_type\' => \'page\',
    array(
        \'key\'     => \'calmonthname\',
        \'value\'   => \'July\',
        \'compare\' => \'=\',
        \'type\'    => \'CHAR\',
    ),
);

$the_query = new WP_Query( $args );

if ( empty( $the_query ) ) {
 exit;
}

if ( $the_query->have_posts()) {
echo
\'<ul>\';

  while ($the_query->have_posts()) : $the_query->the_post();

    $id = $post->ID; $thumb = get_the_post_thumbnail($id, \'full\');
    echo
    \'<li>\' .
      \'<a href="\' . the_permalink() . \'">\' . $thumb . the_title() . (Today) . \'</a>\' .
    \'</li>\';

  endwhile;

echo
\'</ul>\';

}

wp_reset_query();

?>

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

首先,注意你的格式<未来的你谢谢你

第二,你刚刚在你的$args 变量我相信你要找的是meta_query 这需要“数组的数组”来进行比较。

第三,我相信你也在寻找posts_per_page, 不numberposts. posts_per_page 是的记录限制参数WP_Query().

还有一些注释,您不需要在单独的行上串联回显字符串,只需保留引号。我不知道是什么(Today) 应该是误传的字符串?您也不需要定义$id 因为你只使用了一次,所以使用$post->ID 缩略图ID。您似乎也在回音the_ 函数,这些函数是响应get_ 功能(参见the_title() vs公司get_the_title() 更多信息/)

正如Tom所提到的,您可以考虑对这种分类进行分类,但是,由于我们不知道这种分类的确切情况,我将把它作为meta\\u查询:

$args = array(
    \'post_type\'      => \'page\',
    \'posts_per_page\' => 1,
    \'meta_query\'     => array(
        array(
            \'key\'     => \'calmonthname\',
            \'value\'   => \'July\',
            \'compare\' => \'=\',
            \'type\'    => \'CHAR\',
        )
    ),
);

$the_query = new WP_Query( $args );

if( $the_query->have_posts() ){
    echo \'<ul>\';
        while( $the_query->have_posts() ) : $the_query->the_post();
            $thumb = get_the_post_thumbnail( $post->ID, \'full\');
            echo \'<li><a href="\'. get_permalink() .\'">\'. $thumb . get_the_title() .\' (Today)</a></li>\';
        endwhile;
    echo \'</ul>\';
}
Update: 基于您的代码(您也可以wp_reset_query() 和使用wp_reset_postdata() 与我们的评论相反,这里有一个更新的答案:

<?php
    $now = new \\DateTime(\'now\');
    $day1= $now->format(\'j\');
    $day = strval($day1);
    $day = str_pad($day , 2, \'0\', STR_PAD_LEFT); //put a 0 in front if single number
    $month1 = $now->format(\'m\');
    $month = strval($month1);
    $month = str_pad($month , 2, \'0\', STR_PAD_LEFT); //put a 0 in front if single number
    //echo $day . $month;

    $args = array(
        \'post_type\'    => \'page\',
        \'meta_query\'   => array(
            array(
                \'key\'     => \'calday\',
                \'value\'   => $day,
                \'compare\' => \'=\',
                \'type\'    => \'CHAR\',
            ),
            array(
                \'key\'     => \'calmonth\',
                \'value\'   => $month,
                \'compare\' => \'=\',
                \'type\'    => \'CHAR\',
            ),
            \'relation\' => \'AND\'
        )
    );

    $the_query = new WP_Query( $args );

    if( $the_query->have_posts() ){
        echo \'<ul>\';
            while( $the_query->have_posts() ) : $the_query->the_post();
                $thumb = get_the_post_thumbnail( $post->ID, \'full\');
                echo \'<li><a href="\'. get_permalink() .\'">\'. $thumb . get_the_title() .\' </a></li>\';
            endwhile;
        echo \'</ul>\';
    }

    wp_reset_postdata();
?>

结束

相关推荐

Home.php中的小部件重定向到index.php

我注册了一个小部件,允许用户按类别筛选帖子或在搜索框中写些东西,问题是我的“博客”页面是“主页”。php“因为它是一个单页网站(在index.php中,我正在加载所有内容),当我选择一个类别或单击搜索按钮时,它会重定向到索引。php,而不是留在家里。php。我怎样才能改变这种行为?