除了<p>标签</p>之外,从输出中删除所有内容

时间:2013-05-10 23:28:24

标签: php wordpress

我有一个Wordpress网站,可以使用the_content()

输出各个博文的内容

博客文章全部由两件事组成,一个小图库和一些文字:

<div class="gallery"><img></img>Blah Blah</div>
<p>Text</p>
<p>Text</p>

我想拆分图库和文本,并在左边的div中输出图库,在右边的div中输出文字,如下所示:

<div id="left">GALLERY CONTENT</div>
<div id="right">TEXT CONNTENT</div>

我尝试使用strip_tags(the_content(), '<p>')执行此操作,但事实并非如此 - 它会继续输出包括图库在内的所有内容。

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:0)

我真的不清楚你真正想要做什么,并且在它上面,你从输出中包含了一些(非常少的)源代码,但为了真正回答你需要包含相关的代码来自模板文件。

(并且仅为了解你应该没有触及你的核心文件 +1)

无论如何,我怀疑你只想禁用wordrpess生成的auto P,所以试试

remove_filter('the_content', 'wpautop');

(在主题中添加到functions.php。)

或者,您可以使用

add_filter('use_default_gallery_style', '__return_false');

这将只是“重置”画廊样式。

甚至可以过滤自己的图库样式,这样可以更好地定位它们。

add_filter( 'gallery_style', 'my_own_gallery_style', 99 );

function my_own_gallery_style() {
    return "<div class='gallery'>"; // put your own
}

如果它没有为您生成正确的输出,请包含更多细节和/或更多代码。

当然有更先进的方法可以解决这个问题,但如果没有更多信息,很难定位。

例如,您可以通过删除原始短代码功能,然后添加自己的短代码功能来创建自己的图库样式,但这些是更先进的技术。

// deactivate WordPress function
remove_shortcode('gallery', 'gallery_shortcode');

// activate your own own function
add_shortcode('gallery', 'my_own_gallery_shortcode');

// the own renamed function
function my_own_gallery_shortcode($attr) {
...
}

另一方面,如果你想“捕捉”'the_content'的某些部分并以不同的方式在循环中显示它,你总是可以使用不同的技术,如在另一个上描述HERE回答。

答案 1 :(得分:0)

您正在使用显示内容的the_content而非返回内容。

将您的代码更改为

strip_tags(get_the_content(), '<p>')

答案 2 :(得分:0)

前一段时间我遇到了同样的问题。这就是我所做的(在single.php中,这就是我遇到问题的地方):

if ( get_post_format() == 'gallery' ) :
    $content = get_the_content();
    $gallery_regex = '/\[gallery.*]/s'; //identify the [gallery] tags within the content

    //get gallery code
    $gallery = preg_match($gallery_regex, $content, $matches);
    $gallery = $matches[0];

    //remove gallery from content
    add_filter('the_content', function($content){
        $gallery_regex = '/\[gallery.*]\s*/s';
        return preg_replace($gallery_regex, ' ', $content);
    });

endif;

基本上,我使用正则表达式从内容中删除图库标记。

$gallery仍然包含短代码。我们不能随意显示它,或者它实际上显示短代码。我们需要执行它,它将显示输出:

if ( get_post_format() == 'gallery' ) {
    echo '<div id="left">'. do_shortcode($gallery) .'</div>';
}

您的内容不再包含图库,因此您可以执行此操作:

<div id="right"><?php the_content(); ?></div>