附加到The_Content()的快捷代码

时间:2012-08-26 作者:Daris Fox

目前,我有一个短片将div嵌入到了the\\u内容中。这很好,如下所示:

[短代码参数=1参数=2]

这将在文章末尾返回一条消息,但在当前文章中,而不是:

<article>
  <div>
</article>
我希望制作:

<article>
</article>
<div>
这是否可能,我需要使用哪些功能?我已经尝试使用add\\u filter和apply\\u filter,但它们进入了无限循环,而不是:

return $message.
谢谢。

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

你的要求是什么can\'t be done using shortcodes. <article> 不是内容的一部分,而是主题的一部分,它“包含”了内容。因此,短代码无法修改或移动这些标记。根据定义,短代码是内容的一部分,因此它们在末尾添加的任何内容也是内容的一部分。

相反,您需要修改主题以在其他地方添加额外的元素。如何做到这一点超出了这个问题/答案的范围,但我建议使用post meta(和metaboxes)来提供UI

为了证明你的要求是不合理的:

<article>
  <?php the_content(); ?>
</article>
<!-- you want the_content() to magically reach over here via a shortcode and do something --!>
取而代之的是以下内容:

<article>
  <?php the_content(); ?>
</article>
<?php
$meta = get_post_meta($post->ID,\'_dothing\',true);
if($meta == true){
    $param1 = get_post_meta($post->ID,\'_dothing_param1\',true);
    $param2= get_post_meta($post->ID,\'_dothing_param2\',true);
    that_shortcode_thing_you_wanted($param1,$param2);
}
?>

结束

相关推荐

Shortcode perfomance solution

我有一个对性能至关重要的站点。在使用短代码时,我考虑了服务器解析和返回内容所需的时间,而不是允许一些HTML(<div class=\"redletter\">) 浏览TinyMCE编辑器。与此同时,我的代码是:// [redletter]Content[/redletter] add_shortcode(\'redletter\', \'redletter_do\'); function redletter_do($atts, $content = null) {