Wordpress剥离<a href=""> from shortcodes</a>

时间:2011-10-21 14:00:11

标签: wordpress shortcode

我有一个相当简单的短代码用于制作报价分组框,其名称为:

[jasminesays quote="blah de blah"]

死得轻松。但是,当我尝试在其中放入一个链接时,wordpress根本不会返回引用。我尝试过的所有其他HTML看起来都很好,它似乎只是出现了类似的东西:

[jasminesays quote="blah <a href="#">de</a> blah"]

这样的东西
[jasminesays quote="blah <p>de</p> blah"]

工作正常。

处理短代码的代码是:

function mm_jasmineSays( $atts ) { 
extract( shortcode_atts( array(  
        "quote" => '',
       ), $atts ) );

return '<link href="'.get_bloginfo( 'template_directory' ).'/css/shortcodes.css" rel="stylesheet" type="text/css" />
        <div class="jasmine-says">
            <h2>Jasmine says...</h2>
            <div class="jasmine-says-quote">
                <p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-1.jpg" /></p>
                <p class="quote">'.$quote.'</p>
                <p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-2.jpg" /></p>
            </div>
        </div>';
}
add_shortcode('jasminesays', 'mm_jasmineSays');

但我认为这不是问题,我猜wordpress正在某些地方过滤某些东西,我需要禁用它。有人有什么想法吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

来自WordPress Codex

  

将短代码处理函数的返回值插入到   发布内容输出代替短代码宏。记得要用   返回而不是回声 - 任何回显的东西都会输出到   浏览器,但它不会出现在页面上的正确位置。

     

在wpautop和wptexturize后格式化后解析短代码   已经应用(但请参阅下面关于2.5.0和2.5.1的说明   差异)。这意味着您的短代码输出HTML不会   自动应用卷曲引号,添加p和br标签等等   上。如果您确实希望格式化短代码输出,则应该   返回输出时直接调用wpautop()或wptexturize()   来自您的短代码处理程序。

     

wpautop识别短代码语法,并尝试不包装p或   短标签周围的标签,独立在一条线上。   打算以这种方式使用的短代码应该确保   输出包装在适当的块标记中,例如p或div。

答案 1 :(得分:0)

不确定这是否有帮助,但您是否尝试将外引号更改为单引号?

[jasminesays quote='blah <a href="#">de</a> blah']

或删除内部引号?

[jasminesays quote="blah <a href=#>de</a> blah"]

答案 2 :(得分:0)

为什么不在短代码中添加url选项?

添加以下内容:

    function mm_jasmineSays( $atts ) { 
extract( shortcode_atts( array(  
"quote" => '',
"url" => '',
), $atts ) );

然后添加

<a href="'.$url.'"> <h2>Jasmine says...</h2></a>

也许它可以工作.. 或使用$ output代替返回:

global $post;
$output .= '<div class="jasmine-says">';
if($quote !== '')
$output .= '<a href="'.$url.'"><h2>Jasmine says...</h2>';
        $output .= '<div class="jasmine-says-quote">'
            $output .='<p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-1.jpg" /></p>';
            $output .='<p class="quote">'.$quote.'</p>';
            $output .='<p><img src="'.get_bloginfo( 'template_directory' ).'/imgs/shortcodes/quote-2.jpg" /></p>';
        $output .='</div>';
    $output .='</div>';