我有一个查询,它通过一组具有post类型的post运行location
. 它返回按自定义字段值(在本例中是位置所在的状态)细分的数据。出于某种原因,页面上只复制了一篇帖子。当我使用the_content
或apply_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\',
),
);
最合适的回答,由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();
}
如果有人能洞察问题发生的原因,那就太棒了。但无论哪种方式,帖子都使用不同的代码正确加载。感谢所有提供意见的人!