在帖子上显示的Wordpress图片标题短代码(不作为标题呈现)

时间:2017-05-11 21:06:57

标签: php wordpress shortcode

我正在尝试修复自定义WordPress主题的问题,该主题在帖子上内嵌呈现图片标题。我的WP知识很多,所以,我不太确定我应该在哪里看。

以下是显示帖子的代码:

<?


$args = array (
    'post_type'              => array( 'post' ),
    'meta_key' => 'event_date', // name of custom field
    'orderby' => 'meta_value_num',
    'order' => 'ASC'
);

// The Query
$blogQuery = new WP_Query( $args );

  while ( $blogQuery->have_posts() ) {
      $blogQuery->the_post();
      $date = DateTime::createFromFormat('Ymd', get_field('event_date'));
      $today = DateTime::createFromFormat('Ymd', date('Ymd'));

      if($date > $today){

          echo '<div class="blog-entry">';
          echo '<h3 class="wonk green-nav">Event: ';
          echo get_the_title().'</h3>';

            if(get_field('update_type') == 'event'){

                echo '<h4>';    
                echo $date->format('l, F jS, Y. ');
                the_field('event_time');
                echo '</h4>';

            }


          echo '<p>' .get_the_content().'</p>';
          echo '</div>';
          }

      }

 wp_reset_postdata();

?>

这是一个屏幕截图,显示了前端的内容......

screenshot of shortcodes being rendered in post text

2 个答案:

答案 0 :(得分:1)

Shyamin的答案是一个潜在的解决方案,但我想更深入地说明实际情况。

In the docs用于the_content()函数,您可以看到Wordpress实际上是在使用get_the_content(),然后使用名为apply_filters( 'the_content', $content) Docs here的便捷函数。

此功能是the_content()get_the_content()相比正确呈现编辑器内容的原因。它正在应用为the_content挂钩添加的所有过滤器。长话短说,添加到该钩子的过滤器之一是do_shortcode(),它呈现了短代码。

Here is a neat blog post我发现在这方面还有更多讨论,以及如何创建自己的apply_filters挂钩并添加自己的过滤器以模仿the_content()对原始内容的作用。

因此,您有2种解决方案:(鉴于您没有其他问题可以阻止显示短代码)

  1. 如果您的代码可以处理它,只需使用the_content()而不是echo get_the_content()
  2. 如果您需要对内容编辑器数据进行更高级的控制,则可以将'<p>' .get_the_content().'</p>';存储在类似$content_data的变量中。然后在您的echo语句中使用:echo apply_filters('the_content', $content_data);

这应该可以解决您的问题!

答案 1 :(得分:0)

我的自定义主题遇到了同样的问题。 Dunno为什么会这样,但我找到了一种方法让它发挥作用。所以把这个评论告诉别人:)

如果您正在使用get_the_content(),请尝试使用the_content()函数加载帖子内容.the_content()将为WordPress中的标题短代码呈现正确的html标记。不知道为什么会这样:/