Php 类似Wordpress的对glossar页面的查询得到错误的结果
我知道这个标题不是很吸引人,但我正在努力找到合适的术语来简单描述它 我的目标是有一个页面,以字母数字顺序列出所有帖子。就像一个词汇表。A-Z 0-9 我的问题是,我有一个自定义查询来输出自定义帖子类型的结果。到现在为止,一直都还不错。 我还有一个修改过的where子句连接到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
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 ) {