通过_Content()复制的帖子内容;

时间:2018-03-20 作者:KreigD

我有一个查询,它通过一组具有post类型的post运行location. 它返回按自定义字段值(在本例中是位置所在的状态)细分的数据。出于某种原因,页面上只复制了一篇帖子。当我使用the_contentapply_filters(\'the_content\', $content);, 它复制了那篇文章。当我使用get_the_content, 它通常返回帖子内容,但没有我需要的格式。我的代码中有什么可能导致这种情况?

$state_posts = array();

while ($query->have_posts()) {
    $query->the_post();
    $state = get_post_meta(get_the_ID(), \'state\', true);
    $state_posts[$state][] = $post;
}

foreach ($state_posts as $state_post => $state_title) {
?>
<h1 class="state-name"><?php echo esc_html($state_post); ?></h1>
<?php
foreach ($state_title as $listing) {
    setup_postdata($listing);
    $post_id = $listing->ID;
    $title = get_the_title($post_id);
    $content = apply_filters(\'the_content\', get_post_field(\'post_content\', $post_id));
    $distance = facetwp_get_distance($post_id);
    $distance = (false !== $distance) ? round($distance, 1) . \' miles away\' : \'\';
    $coords = get_post_meta($post_id, \'location\', true);
?>
<div class="post-item" data-title="<?php echo esc_attr($title); ?>" data-latitude="<?php echo $coords[\'lat\']; ?>" data-longitude="<?php echo $coords[\'lng\']; ?>" data-distance="<?php echo $distance; ?>">
  <div class="post-item-content">
    <h2><?php echo $title; ?></h2>
    <div><?php echo $content; ?></div>
  </div>
</div>
<?php
   }
   wp_reset_postdata();
}
以下是相关页面:https://dare2sharelive.org/locations/?fwp_states=missouri

是的,我已经检查了这两篇文章是否有什么特别的地方,它们的格式与其他所有文章完全相同。

编辑:这是一个查询,以防出现问题。

<?php
return array(
    \'post_type\' => \'location\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
    \'order\' => \'ASC\',
    \'meta_key\' => \'state\',
    \'orderby\' => array(
        \'meta_value\' => \'ASC\',
        \'title\' => \'ASC\',
    ),
);

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

这个问题仍然存在,但我现在已经找到了一个解决方法。当我更换echo apply_filters(\'the_content\', get_post_field(\'post_content\', $post_id)) 具有echo wpautop( get_the_content() ), 它成功了。我也停止使用变量$post,因为我没有访问全局post变量。

因此,我的代码看起来是这样的:

$state_posts = array();

while ($query->have_posts()) {
    $query->the_post();
    $state = get_post_meta(get_the_ID(), \'state\', true);
    // Changed code here
    $state_posts[$state][] = $query->post;
}

wp_reset_postdata();

foreach ($state_posts as $state_post => $state_title) {
?>
<h1 class="state-name"><?php echo esc_html($state_post); ?></h1>
<?php
foreach ($state_title as $listing) {
    setup_postdata($listing);
    $post_id = $listing->ID;
    $title = get_the_title($post_id);
    $distance = facetwp_get_distance($post_id);
    $distance = (false !== $distance) ? round($distance, 1) . \' miles away\' : \'\';
    $coords = get_post_meta($post_id, \'location\', true);
?>
<div class="post-item" data-title="<?php echo esc_attr($title); ?>" data-latitude="<?php echo $coords[\'lat\']; ?>" data-longitude="<?php echo $coords[\'lng\']; ?>" data-distance="<?php echo $distance; ?>">
  <div class="post-item-content">
    <h2><?php echo $title; ?></h2>
    // Changed code here
    <div><?php echo wpautop( get_the_content() ); ?></div>
  </div>
</div>
<?php
   }
   wp_reset_postdata();
}
如果有人能洞察问题发生的原因,那就太棒了。但无论哪种方式,帖子都使用不同的代码正确加载。感谢所有提供意见的人!

结束