我只是安装Yoast的Wordpress SEO插件,测试标题重写功能,它在我的标题栏(单个帖子)中有效。但是,当我尝试在小部件中调用标题时,我只是收到错误消息
警告:缺少kpndg()...
的参数1
我在主题functions.php
中插入此代码add_filter( 'wpseo_title', 'kpndg' );
function kpndg( $title ) {
return $title;
}
然后在我的小部件中调用它:
$out.='<div class="trending-bar add-active bar-' . $i . '">';
$out.='<a class="trending-link" href="'.get_permalink().'"> </a>';
$out.='<div class="title">'.kpndg().'</div>';
$out.='<div class="trending-color-wrapper">';
$out.='<div class="trending-color-layer"></div>';
$out.='<div class="trending-color"></div>';
$out.='<div class="trending-meta">' . $meta . '</div>';
$out.='</div>';
$out.='</div>';
我无法弄清楚该代码中的问题。
仅供参考:我使用工业主题的引擎主题
答案 0 :(得分:1)
这一行:$out.='<div class="title">'.kpndg().'</div>';
您需要指定参数...或者,为$title
参数设置默认值:
add_filter( 'wpseo_title', 'kpndg' );
function kpndg( $title = 'foo' ) {
return $title;
}
修改强>
您确定使用get_post_meta(get_the_ID(), '_yoast_wpseo_title', true);
代替kpndg()
并不意味着吗?
编辑#2
不要为wpseo_title
添加新的过滤器,只需创建&#34;帮助函数&#34;:
function kpndg() {
return get_post_meta(get_the_ID(), '_yoast_wpseo_title', true) ?: get_the_title();
}
然后,在循环中,您可以调用echo kpndg()