为什么<div>Ad goes here
部分会显示在内容之上?它应该显示在$content
的底部。如果我直接将$content
作为return $content.'<div>The ads goes here</div>';
返回,则会显示在底部。有线索吗?
add_filter( 'the_content', 'ads_filter' );
function ads_filter ($content){
return $content.ads();
}
function ads(){
echo '<div>The ads goes here</div>';
}
答案 0 :(得分:3)
对于简单的解决方案,请在return
函数中使用echo
代替ads()
:
add_filter( 'the_content', 'ads_filter' );
function ads_filter ($content){
return $content.ads();
}
function ads(){
return '<div>The ads goes here</div>';
}
因为当你编写echo
并将其与$content
连接起来时,它已经打印了外部内容,然后连接了实际的帖子内容。
以下是您对短代码的回答:
add_filter( 'the_content', 'ads_filter' );
function ads_filter ($content){
return $content.do_shortcode(ads());
}
add_shortcode('ads_shortcode','here_is_func');
function here_is_func(){
return '<div>The ads goes here</div>';
}
function ads(){
return '[ads_shortcode]';
}
答案 1 :(得分:2)
如果您从documentation
中看到add_filter
功能的签名
add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
您可以通过更改不同的优先级来玩它。较低的数字与先前的执行相对应,具有相同优先级的函数按照它们添加到操作的顺序执行。只要给它一个高优先级,看看它的位置。
add_filter( 'the_content', 'ads_filter', 10 );
function ads_filter ($content){
return $content.ads();
}
function ads(){
echo '<div>The ads goes here</div>';
}