0

我有一个 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>')但这并没有 - 它继续输出包括画廊在内的所有内容。

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

4

3 回答 3

0

我不清楚您真正想要做什么,并且在其中,您从输出中包含了一些(非常少的)源代码,但是要真正了解答案,您需要包含模板中的相关代码文件。

(并且+1仅用于理解您不应该触摸您的核心文件

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

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”的某些部分并以不同的方式在循环中显示它,您总是可以使用不同的技术,就像这里描述的另一个答案。

于 2013-05-11T02:38:52.947 回答
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>
于 2013-05-12T02:46:54.520 回答
0

您正在使用the_contentwhich 显示内容而不是返回它。

将您的代码更改为

strip_tags(get_the_content(), '<p>')
于 2013-05-11T06:35:35.833 回答