如何在WordPress中动态获取分类名并传入get_posts数组?
WordPress分类页动态获取对应文章的解决方案
你的问题出在两个关键点:
single_cat_title()默认直接输出分类标题,不会返回字符串,直接赋值给变量会导致变量为空,还会提前输出标题内容get_posts的category_name参数需要的是分类的别名(slug),不是显示标题——如果你的分类标题和slug不一致,就算拿到标题也无法匹配到对应分类
修正方案(推荐)
直接获取当前分类对象的slug,这是最可靠的方式,不受标题修改影响:
<?php // 获取当前分类的对象 $current_cat = get_queried_object(); // 确认是有效的分类术语 if ($current_cat instanceof WP_Term) { $posts = get_posts(array( 'posts_per_page' => -1, 'post_type' => 'handelser', 'category_name' => $current_cat->slug, // 使用分类slug 'meta_key' => 'datum', 'orderby' => 'meta_value_num', 'order' => 'DESC', // 注意:你之前写的DSC是错误的,应为DESC )); } if( $posts ): ?>
备选方案(仅当分类标题与slug完全一致时可用)
让 single_cat_title() 返回值而非直接输出,需要传入第二个参数为 false:
<?php // 让函数返回标题字符串,不直接输出 $catname = single_cat_title('', false); $posts = get_posts(array( 'posts_per_page' => -1, 'post_type' => 'handelser', 'category_name' => $catname, 'meta_key' => 'datum', 'orderby' => 'meta_value_num', 'order' => 'DESC', // 修正排序参数拼写错误 )); if( $posts ): ?>
额外提醒:你的代码中排序参数写的是 DSC,这是拼写错误,正确的降序参数是 DESC,需要修正才能正常按日期排序。
内容的提问来源于stack exchange,提问作者siaeva
相关产品推荐
相关产品推荐

