删除WordPress帖子中图片周围的额外标题标签

时间:2017-10-25 作者:Noman Ahmad

我在使用get\\u the\\u content()函数时遇到了一个问题。它显示文章内容,但内容开头的图像周围有一些额外的文本。我的代码是:

<div class="thecontent" itemprop="articleBody">
   <?php echo get_the_content(); ?>
</div>
输出:

enter image description here

我也试过了

<div class="thecontent" itemprop="articleBody">
   <?php $content= get_the_content();  
         echo apply_filters(\'the_content\', $content); 
   ?>
</div>
但在这种情况下,图片根本没有显示出来。

输出:

enter image description here

2 个回复
最合适的回答,由SO网友:WebElaine 整理而成

要确保执行短代码,请将内容保存到变量中,然后运行do_shortcode 在保存的变量上。

<div class="thecontent" itemprop="articleBody">
    <?php $content = get_the_content();
    echo do_shortcode($content); ?>
</div>
不同的是,回声只是字面上的回声被抓住了。PHP的内置函数没有任何特殊的方法来处理短代码,所以它们只是按照指示输出。通过使用特定于WP的函数,WordPress解析并显示任何内容。即使内容中没有短代码,也可以这样做。

SO网友:Nathan Johnson

你最初拥有的,echo get_the_content(); 不起作用,因为do_shortcode 调用时未应用回调get_the_content(), 但打电话的时候the_content(). 这就是为什么标题短代码没有被转换成相应的HTML。

几乎没有理由echo get_the_content() 因为这基本上就是the_content()

<div class="thecontent" itemprop="articleBody">
  <?php the_content(); ?>
</div>
如果出于任何原因,您的使用可能需要使用get_the_content() 而不是the_content(), 您需要确保do_shortcode 在打印HTML之前应用回调。所以有几种方法可以解决这个问题。一个(应该有效)是通过应用the_content 筛选到get_the_content() 作用

//* In your index.php (or wherever template file)
printf( 
  \'<div class="thecontent" itemprop="articleBody">%1$s</div>\',
  apply_filters( \'the_content\', $content )
);
这基本上就是你在问题中所尝试的。我这样写是因为对我来说,这段代码的作用更清楚。要明确的是,这应该是可行的。因为它不是,所以有一个过滤器连接到the_content 你的主题或插件会把事情搞砸。确保禁用所有插件,并禁用主题中过滤的任何其他部分the_content.

另一种方法是强制短代码执行它们的操作。这就是韦伯莱恩在回答中所说的。我会稍微改变一下,但同样的概念。

//* Again, in a template file
printf(
  <div class="thecontent" itemprop="articleBody">%1$s</div>,
  do_shortcode( get_the_content() )
);
在函数中也有这样做的方法。php或函数中包含的其他文件。php,甚至一个插件。你能做的就是the_content 然后在那里添加包装。

//* In your functions.php
add_filter( \'the_content\', \'wpse_283971_the_content\', 1000 );
function wpse_283971_the_content( $content ) {
  return sprintf( \'<div class="thecontent" itemprop="articleBody">%1$s</div>\', $content );
}

//* In your template file
the_content();
我猜你是想echo get_the_content() 而不仅仅是使用the_content() 是因为the_content() 不起作用。您需要找到导致以下问题的筛选器the_content. 从外观上看,其中一个过滤器忘记了返回其结果。

结束

相关推荐

为自定义帖子类型/分类设置不同的POSTS_PER_PAGE

我有一个自定义的帖子类型,我想在我的网站上的分类页面上完全显示该帖子类型,而不是网站的常规博客部分。我制作了一个自定义分类法和帖子类型,如下所示:add_action(\'init\', \'create_post_types\'); function create_post_types() { register_taxonomy(\'tips-and-tricks-taxonomy\', \'tat\', array( \'hierarchical\'