遵守FTC guidelines, 我正试图让所有带有附属链接的帖子在帖子之前都有一个免责声明。在考虑了不同的选项后,最有意义的想法是在我的帖子上添加诸如“附属”之类的附属链接然后我可以使用一些代码来给出我想要的免责声明。
所以我找到了一些代码widget before post content.
/** Register Before Post Widget Area.*/
function wpsites_before_post_widget() {
register_sidebar( array(
\'name\' => \'Before Post Widget\',
\'id\' => \'before-post\',
\'before_widget\' => \'<div>\',
\'after_widget\' => \'</div>\',
) );
}
add_action( \'widgets_init\', \'wpsites_before_post_widget\' );
function before_post_widget($content) {
if ( is_singular(array(\'post\', \'page\')) && is_active_sidebar( \'before-post\' ) && is_main_query() ) {
dynamic_sidebar(\'before-post\', array(
\'before\' => \'<div class="before-post">\',
\'after\' => \'</div>\',
) );
return $content;
}
}
add_filter( \'the_content\', \'before_post_widget\' );
这很有效,给了我一个“发布前小部件”我添加了我的免责声明文本,它出现在我所有的帖子上。现在我只需要让它只显示在带有“附属”标签的页面上。
我已经安装了Jetpack,所以我可以将小部件的可见性设置为“显示标签是否为附属标签”对我来说很有意义,而且似乎很容易。
问题是,在任何没有标签的帖子上,帖子内容都会完全丢失。其他一切都保留了下来(标题、侧边栏、共享等),但所有内容都消失了。
我确保在处理这个问题之前关闭所有缓存,只是为了确保我没有搞砸任何事情,并使用未登录到我网站的其他浏览器进行测试,但问题仍然存在。
另一个问题是,在我的页面(非帖子)上,免责声明文本只会在包括标题在内的所有内容上方显示两次。
我不得不从函数中删除代码。php使一切恢复正常。
我对PHP不太熟悉-显示的代码有意义吗?或者应该对其进行一些更改吗?有没有更好的方法在我的帖子上使用附属标签来实现这一点?
谢谢你的帮助!
--吉姆
最合适的回答,由SO网友:Daniel Lemes 整理而成
有没有更好的方法在我的帖子上使用附属标签来实现这一点?
当然,我会选择一个更简单的选择,而不是依赖Jetpack之类的插件。
你为什么不试试has_tag 作用类似这样:
function tt_filter_the_content( $content ) {
if (has_tag(\'affiliate\'))
$custom_content = \'YOUR MESSAGE\';
$custom_content .= $content;
return $custom_content;
}
add_filter( \'the_content\', \'tt_filter_the_content\' );
这将过滤你的内容,并在所有带有“附属”标签名的帖子上添加你的“你的消息”。
参考https://developer.wordpress.org/reference/functions/has_tag/