使用短码将$Content包装到链接中

时间:2015-01-16 作者:bypatryk

我正在WordPress中使用短代码,我正在努力解决一个问题。我试图将$内容包装到标签中,但它无法正常工作。下面是我的shortcode函数:

<?php
add_shortcode(\'rect\', \'pp_rect\');
function pp_rect($atts, $content=null) {    
    extract(shortcode_atts(array(
        \'x\'     => 1,
        \'y\'    => 1,
        \'url\'       => false,
        \'img\'   => true,
    ), $atts));

    preg_match(\'@src="([^"]+)"@\' , $content, $match);
    $img = array_pop($match);
    $content = preg_replace("/<img[^>]+\\>/i", "", $content);

    if(!$img)
        $out = \'<div class="rect rect-\'.$x.\'-\'.$y.\' no-img" style="background-image: url(\'.$img.\');"><div class="rect-content">\';
    else
        $out = \'<div class="rect rect-\'.$x.\'-\'.$y.\' img" style="background-image: url(\'.$img.\');"><div class="rect-content">\';

    if ($url)
        $out .= \'<a href="\'.$url.\'">\'.do_shortcode($content).\'</a></div></div>\';
    else
        $out .= do_shortcode($content).\'</div></div>\';

    return $out;
}
?>
如果我想执行这样的短代码

[rect x=2 y=2 url=#]
<h1>Big header</h1>
<img src="someimg.jpg">
[/rect]
我收到这样的输出:

<a href="#">
    <p></p>
    <h1>Big header</h1>
    <p></p>
</a>
<p>
    <a href="#"></a>
</p>
而不是:

<a href="#">
    <h1>Big header</h1>
</a>
我盯着一个代码,找不到它有什么问题。非常感谢您的帮助。祝你愉快Patryk

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

这是WordPress中的一个过滤器,名为wpautop 在发布帖子时,它可以使格式更清晰,然而,当你想要对格式进行更多控制时,这可能是一件痛苦的事。它基本上将返回内容包装在段落中,以便在编辑器中看到的空间在前端得到遵守。

您可以将其完全禁用,方法是将其放置在函数中。php

remove_filter( \'the_content\', \'wpautop\' );
或者,您可以通过将其放置在函数中,仅对封装在短代码中的元素禁用它。php,它将延迟格式化,直到呈现短代码之后。这就是12在add\\u filter调用中的含义-它基本上是说作为第12个进程执行此操作,例如,短代码可能会在第6个进程中执行

remove_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'wpautop\' , 12);
您可以在此处阅读有关codex自动格式化的更多信息:http://codex.wordpress.org/Function_Reference/wpautop

结束

相关推荐

WP_QUERY循环、参数中的偏移量和PAGINATE_LINKS--这些可以一起使用吗?

我有一个页面,其中第7类的前4篇帖子显示了它们自己的查询和风格。然后我有一个小框,我想显示第7类的其余帖子,并使用分页。基本上,我想让分页只对长方体起作用,同时将前四个固定。问题是我不想在框中复制前4个,因此我在查询中使用偏移量。不幸的是,当我这样做时,分页中的每一页都显示了与前一页相同的帖子。我能做些什么来避免这种情况? <?php $paged = ( get_query_var( \'paged\' ) ) ? absint( get_query_var( \'