正如我所说,永远不要使用query_posts
. 你在抄本中链接到的页面一文不值,完全错误。有关为什么不使用的其他信息query_posts
, 检查my answer here 答案是@Rarst.
你还有一个问题,category_name
做not 接受类别名称作为值,但slug. 此参数的命名约定错误。get_the_title()
返回页面名称/标题,而不是slug。如果页面的标题只有一个单词,但没有特殊字符,则查询可能会起作用WP_Tax_Query
类可能会将其与slug匹配,但如果页面名称有特殊字符或有多个单词,则会失败。
您需要的是获取页面slug,它将作为类别slug传递给category_name
为此,需要获取查询的对象,然后返回$post_name
所有物同样,命名约定是完全错误的。$post_name
保存页面的slug,而不是名称。
在订购时,您需要设置orderby
参数到title
和order
到ASC
从a-z而非默认顺序排序z-a
总而言之,您的查询如下所示:(NOTE: 至少需要PHP 5.4)
$args = [
\'category_name\' => get_queried_object()->post_name,
\'order\' => \'ASC\',
\'orderby\' => \'title\' // Can use \'name\' as well, see https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
// Add any extra parameters you need
];
$q = new WP_Query( $args );
// Run the loop
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
// Display what you need from the loop like title, content etc
}
wp_reset_postdata();
}
您也可以尝试使用以下内容
this 您可以在页面上选择发布页面时要显示的类别,还可以选择排序和其他一些功能。