请求协助:让获取RankMath SEO标题的短代码适配自定义文章类型user_ads
解决Rank Math SEO标题短代码扩展到自定义分类/文章类型的问题
看起来你遇到的核心问题是:原来的短代码只针对文章/页面这类Post类型读取元数据,但你提到的user_ads相关条目实际上是自定义分类法的术语(从编辑URL是term.php就能看出来,这是WordPress管理分类术语的页面),Rank Math对分类术语的SEO标题存储位置和Post类型不一样。
下面是修改后的函数,既能支持默认文章/页面、自定义文章类型的单页,也能支持自定义分类术语页面:
add_shortcode('rm_title', 'rm_shortcode_title'); function rm_shortcode_title(){ // 处理单内容页面(包括所有自定义文章类型的单页) if (is_singular()) { global $post; $title = get_post_meta($post->ID, 'rank_math_title', true); // 如果没有设置Rank Math SEO标题,回退到默认页面/文章标题 if (empty($title)) { $title = get_the_title($post->ID); } return $title; } // 处理分类/标签/自定义分类的术语页面(比如你的custom_5662分类) elseif (is_tax() || is_category() || is_tag()) { global $term; $title = get_term_meta($term->term_id, 'rank_math_title', true); // 回退到默认术语名称 if (empty($title)) { $title = $term->name; } return $title; } // 其他页面(比如首页、归档页)回退到站点名称 else { return get_bloginfo('name'); } }
关键修改说明:
- 新增了
is_singular()判断:这个函数会匹配所有自定义文章类型的单页,而不仅仅是默认的post和page,如果user_ads确实是自定义文章类型,它的单页也能正常获取SEO标题。 - 新增了分类术语处理逻辑:针对
term.php管理的自定义分类(你的custom_5662),通过全局$term变量读取term_meta里的Rank Math标题(Rank Math对分类术语的SEO标题同样存在rank_math_title键下)。 - 增加了回退机制:如果某个页面/术语没有设置Rank Math SEO标题,会自动显示默认标题,避免出现空内容。
现在你可以在user_ads相关的分类术语页面或者自定义文章类型单页中使用[rm_title]短代码,就能正常获取到对应的Rank Math SEO标题了。
内容的提问来源于stack exchange,提问作者lunastorta
相关产品推荐
相关产品推荐

