如何在评论中嵌入WordPress默认库?

时间:2019-04-16 作者:luckyankit

我想在注释中嵌入WordPress默认图库,其中包含以下嵌入代码:

[gallery link="file" columns="2" size="medium" ids="1,2"]
为此,我添加了以下代码,它可以在注释中启用短代码:

add_filter( \'comment_text\', \'do_shortcode\' )
但有人表示,这样做并不安全。因此,我应该如何以正确的方式在评论中启用短代码,或者如果有办法的话,目前我也只能使用库短代码来管理?

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

实际上,如果您允许在注释中使用各种短代码,您不知道会得到什么效果。如果您安装了功能强大的短代码(可能在不知情的情况下,作为您不使用的功能),它甚至可能成为一个安全问题。所以,诀窍是有选择地允许某些短代码。首先,让我们将过滤器添加到get_comment_text (不包括comment_text 这也会影响您的评论提要)。

add_filter (\'get_comment_text\',\'wpse334485_filter_shortcodes\',10,3);
现在,我们必须确保此过滤器将仅应用库过滤器。也就是说,我们需要从注释中除去除库短代码之外的所有短代码。我们开始吧:

function wpse334485_filter_shortcodes ($comment_text, $comment, $args) {
  $comment_text = strip_shortcodes ($comment_text);
  return do_shortcode ($comment_text);
  }
上面的代码将删除所有短代码,因此它不完整。幸运的是strip_shortcodes 函数有一个过滤器,允许您影响删除哪些标记。这是:

add_filter (\'strip_shortcodes_tagnames\',\'wpse334485_allow_gallery_shortcode\',10,2);
function wpse334485_allow_gallery_shortcode ($tags_to_remove, $comment_text) {
  return array (\'[gallery]\');
  }
请注意,我没有测试此代码,因此可能需要进行一些调试。

相关推荐

基于POST所选内容打印OEmbedded URL,不带页面刷新

硬编码的HTML如下所示→ <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/G4Q0oX8wquU\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe> 但在WordPress的情况下,它应该来自元,即保存在Oembed中的URL。看看这张照片single.php 后端→我试过这种