因此,我试图在我的博客文章末尾添加一个按钮,以下是我目前在插件中的代码:
<?php
/*
Plugin Name: etc....
*/
function shares_content() { ?>
<div class=\'social-shares-container\'>
<a href=\'https://www.facebook.com/sharer/sharer.php?u=<?php echo the_permalink(); ?>\'>Share on Facebook</a>
</div> <?php
}
function shares_add_buttons($content) {
global $post;
if (!is_page() && is_object($post)) {
return $content . shares_content();
}
return $content;
}
add_filter(\'the_content\', \'shares_add_buttons\');
?>
这会在我的内容之前添加链接,但如果我这样做,它会将新内容添加到所需的位置(之后
the_content
):
function shares_add_buttons($content) {
global $post;
if (!is_page() && is_object($post)) {
return $content . \'some random content\';
}
return $content;
}
谁能告诉我这是为什么吗?
最合适的回答,由SO网友:Milo 整理而成
你的shares_content
函数直接输出内容,如果您试图将结果分配给变量或在return
另一个函数中的语句。
您可以将其更改为return
字符串:
function shares_content() {
$content = "<div class=\'social-shares-container\'><a href=\'https://www.facebook.com/sharer/sharer.php?u=%s\'>Share on Facebook</a></div>";
return sprintf( $content, get_permalink() );
}
这里还值得指出的是
get_permalink()
. 如果您查看源代码,该函数也
return
s其价值。还有另一个API函数,
the_permalink()
, 其中包含
echo
而不是
return
. 这也会破坏过滤器输出。大多数WordPress函数都有这样的两个版本。
SO网友:Krzysiek Dróżdż
在此行中:
return $content . shares_content();
将原始内容与
shares_content
作用所以它看起来是正确的,但是。。。
在该功能中:
function shares_content() { ?>
<div class=\'social-shares-container\'>
<a href=\'https://www.facebook.com/sharer/sharer.php?u=<?php echo the_permalink(); ?>\'>Share on Facebook</a>
</div> <?php
}
您不返回任何内容,因此此函数没有结果,因此不会向过滤器中的内容追加任何内容。
但同时。。。此函数将div与link相呼应,以便在函数运行时打印内容,从而在内容之前打印内容。。。