我遇到的问题是当我没有以管理员身份登录wordpress时。它在事件页面上显示了以下内容。
http://www.productplusconcepts.nl/hiteclife/wp-content/themes/hi-tec/hl-step1.jpg
现在,当我登录wordpress后端并转到相同的事件页面时,它会向我显示下一张图片的正方形内容。
http://www.productplusconcepts.nl/hiteclife/wp-content/themes/hi-tec/hl-step2.jpg
这是我对循环的查询。
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args['post_type'] = 'evenementen';
$args['post_status'] = 'publish';
$args['relation'] = 'AND';
$args['order_by'] = 'datum_start';
$args['order'] = 'ASC';
$args['posts_per_page'] = 10;
$args['paged'] = $paged;
$args['meta_query'] = array(
array(
'key' => 'datum_eind',
'value' => date('Ymd'),
'compare' => '>='
)
);
if(!empty($_GET['maand'])){
$args['meta_query'] = array(
array(
'key' => 'datum_eind',
'value' => date('Ymd'),
'compare' => '>='
),
array(
'key' => 'welke_maand',
'value' => $_GET['maand'],
'compare' => '='
)
);
}
if(!empty($_GET['provincie'])){
$args['meta_query'] = array(
array(
'key' => 'datum_eind',
'value' => date('Ymd'),
'compare' => '>='
),
array(
'key'=> 'provincie',
'value'=> $_GET['provincie'],
'compare'=> '='
)
);
}
if(!empty($_GET['afstand'])){
$afstanden = explode(',', urldecode($_GET['afstand']));
$args['meta_query'] = array();
array_push($args['meta_query'],
array(
'key' => 'datum_eind',
'value' => date('Ymd'),
'compare' => '>='
)
);
foreach($afstanden as $afstand) {
array_push($args['meta_query'],
array(
'key'=>'afstand',
'value'=> $afstand,
'compare'=>'LIKE'
)
);
}
}
$overzicht = new WP_Query($args);
现在我使用3个过滤器来处理它加载的内容,它们工作得很完美,但是在循环中显示代码。
if( $overzicht->have_posts() ) :
while( $overzicht->have_posts() ) : $overzicht->the_post(); ?>
<li>
<a href="<?php the_permalink();?>"><?php the_title();?>
<div class="click"></div>
<div class="extrainfo">
<span class="pull-right">
<?php echo '<span class="label label-info">' . get_field('plaats') . '</span>'; ?>
</span>
<span class="pull-left">
<?php
$afstanden = get_field('afstand');
//echo "<pre>";
//print_r($afstanden);
//echo "</pre>";
if(!empty($afstanden)) {
if(is_array($afstanden)) {
$items = array();
foreach($afstanden as $afstand) {
$fields = get_fields($afstand->ID);
$items[] = format_distance($fields['minimaal'], $fields['maximaal']);
}
if(count($items) > 1)
echo '<strong>Afstanden: </strong>';
elseif(count($items === 1))
echo '<strong>Afstand: </strong>';
echo fancify($items);
} else {
echo '<em>Geen afstand(en) beschikbaar.</em>';
}
} else {
echo '<em>Geen afstand(en) beschikbaar.</em>';
}
echo '<br>';
if(get_field('datum_start') && get_field('datum_eind')){
$date_start = datum_omzetten(get_field('datum_start'));
$date_eind = datum_omzetten(get_field('datum_eind'));
echo 'Van: '. $date_start . ' t/m: '. $date_eind;
}else{
echo datum_omzetten(get_field('datum'));
}
?>
</span>
</div>
</a>
<div class="clearfix"></div>
</li>
<?php
endwhile;
wp_reset_postdata();
else:
?>
<p>Helaas, er zijn geen evenementen gevonden. <br /><br>Wilt u een evenement aanmelden? Neem dan <a href="<? echo site_url();?>/contact">contact</a> met ons op</p>
<?php
endif;
循环中调用的唯一函数是模板函数中的format_distance和fancify.php
格式距离:
function format_distance($min, $max) {
if($min < $max)
return sprintf('%s-%skm', $min, $max);
elseif($min > $max)
return sprintf('>%skm', $min);
else
return '?';}
Fancify:
function fancify($items) {
if(is_array($items)) {
$str = '';
$size = count($items);
for($i = 0; $i < $size; $i++) {
$str .= $items[$i];
if($i < $size - 2)
$str .= ', ';
elseif($i < $size - 1)
$str .= ' of ';
}
return $str;
} else
return '?';}
我似乎无法找到问题为什么循环只会在我登录时向我显示afstanden(距离)。
答案 0 :(得分:0)
原来这是Wordpress插件自定义高级字段和BBPress论坛之间的冲突。他们都使用get_field关系post对象。这就是我没有登录时无法看到内容的原因。要解决此问题,请将此添加到主题的功能文件中。
add_filter('acf/get_post_types', 'my_acf_post_type_filter', 20, 3);
function my_acf_post_type_filter ($post_types) {
$exclude = array('topic', 'reply');
// exclude
foreach( $exclude as $p )
{
unset( $post_types[ $p ] );
}
return $post_types; }