快码内部的超文本标记语言中断快码输出

时间:2014-04-11 作者:Kirill M

大量的谷歌搜索仍然没有找到解决方案。问题是:

我已经创建了一个自定义的Wordpress短代码,用于我的论文主题。短代码的目标是允许用户在模式标记标记中包装页面/帖子上的内容。我的代码如下:

function articlesection_rs_shortcode($atts, $content) {
    $content = do_shortcode($content);
    return \'<span itemprop="articleSection">\'.wpautop($content).\'</span>\';
}
add_shortcode(\'schema_article_section\', \'articlesection_rs_shortcode\');
但问题是。如果我的快捷代码开始/结束标记之间的内容没有HTML元素,那么一切看起来都很好。但是,如果我在内部内容上有任何HTML标记,则关闭</span> 放在我的内容的最末端,而不是放在结束短代码标记的位置。视觉示例:

短代码内的内容为纯文本时的输出:

<span itemprop="articleSection">test content</span>
短代码内的内容为HTML内容时的输出:

<span itemprop="articleSection">
    <h1>test content</h1>
    .........
    <!-- More Content Until end of page -->
</span>
我试过使用wpautop()wptexturize() 但运气不好。

我正在使用Wordpress 3.8.2和论文1.8.5。非常感谢您的任何帮助、建议、代码或链接。

编辑:有人有什么想法吗?

3 个回复
SO网友:Kirill M

Wordpress在处理换行符和短代码之间的自动样式时遇到了一些奇怪的问题。经过一段时间的反复尝试,终于解决了这个问题。非常挑剔的系统。。。

SO网友:Silenced

Try this:

function shortcode_func( $atts ) {
    ob_start();

    echo \'shortcode output\';

    $output = ob_get_contents();
    ob_end_clean();
    echo $output; // Here comes the total output of your shortcode
}
add_shortcode( \'shortcode\', \'shortcode_func\' );
SO网友:dg4220

给你。我想第一个问题是打电话do_shortcode($content) 被呼叫的add_shortcode() 所以这是多余的。那么我想打电话wpautop($content) 引入了另一个问题,而不是接近解决方案。

function articlesection_rs_shortcode($atts, $content) {

return \'<span itemprop="articleSection">\'. $content .\'</span>\';
 }
 add_shortcode(\'schema_article_section\', \'articlesection_rs_shortcode\');

结束

相关推荐

在Pre_Get_Posts内修改的查询中包括默认和自定义发布类型

我想在author arhive页面中包含自定义帖子类型。我尝试了本文中讨论的方法:Including post_type = 'wiki' in author archivesadd_action( \'pre_get_posts\', \'custom_post_author_archive\' ); function custom_post_author_archive( &$query ) { if ( $query->is_autho