Php 类似Wordpress的对glossar页面的查询得到错误的结果

Php 类似Wordpress的对glossar页面的查询得到错误的结果,php,mysql,wordpress,Php,Mysql,Wordpress,我知道这个标题不是很吸引人,但我正在努力找到合适的术语来简单描述它 我的目标是有一个页面,以字母数字顺序列出所有帖子。就像一个词汇表。A-Z 0-9 我的问题是,我有一个自定义查询来输出自定义帖子类型的结果。到现在为止,一直都还不错。 我还有一个修改过的where子句连接到posts\u where // adds a new parameter for WP_QUERY ('starts_with' => $_POST['letter'] function query_starts_wi

我知道这个标题不是很吸引人,但我正在努力找到合适的术语来简单描述它

我的目标是有一个页面,以字母数字顺序列出所有帖子。就像一个词汇表。A-Z 0-9

我的问题是,我有一个自定义查询来输出自定义帖子类型的结果。到现在为止,一直都还不错。 我还有一个修改过的where子句连接到
posts\u where

// adds a new parameter for WP_QUERY ('starts_with' => $_POST['letter']
function query_starts_with( $where, $query ) {
    global $wpdb;

    $starts_with = $query->get( 'starts_with' );

    if ( $starts_with ) {
        $where .= " AND $wpdb->posts.post_title LIKE '$starts_with%'";
    }

        return $where;
    }

add_filter( 'posts_where', 'query_starts_with', 10, 2 );
所以我是这样质疑的:

<?php 
     $args = array(
         'post_type'         => 'lexikon',
         'post_status'       => 'publish',
         'starts_with'       => $letter
     ); 

     $qry = new WP_Query( $args );
?>
因此,所有这些都是我的自定义循环:

<?php foreach ($letters_arr as $letter) : ?>

<?php 
$args = array(
    'post_type'         => 'lexikon',
    'post_status'       => 'publish',
    'starts_with'       => $letter
); 

$qry = new WP_Query( $args );
?>

<?php if ( $qry->have_posts() ) : ?> 

    <?php while ( $qry->have_posts() ) : $qry->the_post(); ?>

        <?php echo strtoupper( $letter ); ?>
        <p><?php echo get_the_title(); ?></p>

    <?php endwhile; ?> 
    <?php wp_reset_postdata(); ?>

<?php endif; ?>

结果是:

T测试标题

0测试标题

总之,出于某种原因,以“T”开头的帖子也会被视为以“0”(零)开头,我不明白为什么


您能告诉我,是什么导致了这个问题吗?

字符串“0”被转换为布尔值false,您可以在中看到。因此,您没有为字母“0”附加where子句。只需从以下位置更改您的if:

if ( $starts_with ) {
致:


既然您提到了
false
,它就非常有意义了。我担心,我以某种方式修改了查询,由于其他地方的错误检查,它总是返回0。但是这个简单的if语句就解决了这个问题。
if ( $starts_with ) {
if ( $starts_with !== false ) {