You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress中动态获取分类名并传入get_posts数组?

WordPress分类页动态获取对应文章的解决方案

你的问题出在两个关键点:

  1. single_cat_title() 默认直接输出分类标题,不会返回字符串,直接赋值给变量会导致变量为空,还会提前输出标题内容
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:00:56