我有一个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>')
执行此操作,但事实并非如此 - 它会继续输出包括图库在内的所有内容。
这样做的正确方法是什么?
答案 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>