我已经为WordPress中的事件创建了自定义帖子类型,现在我正在尝试将它们列在我名为Events的页面模板上的自定义元框的值中。
正在重复元框中的值,然后是一个模式:
最新帖子很好,
旧帖子会显示最新帖子的元框值和值
依此类推。
这是正在发生的事情的屏幕截图:
这是一个显示帖子的查询:
<?php
/*
Template Name: Event
*/
?>
<?php get_header(); ?>
<?php if (have_posts()) : while (have_posts()) : the_post();
if ( get_post_meta($post->ID, '_ct_hdr_value') ) : ?>
<div class="page-name innerpage<?php echo $post->post_name; ?>">
<div class="row">
<div class="twelvecol">
<h1 class="page-h1"><?php the_title(); ?> </h1>
</div>
</div>
</div>
<?php endif;?>
<div class="row">
<div class="page-container">
<div class="row">
<div class="content twelvecol">
<?php echo the_content();
endwhile;
endif; ?>
</div>
</div>
<section class="events cf">
<h3 class="fancy"><span>Upcoming events</span></h3>
<ul id="office-list" class="cf">
<?php
query_posts(array('post_type' => 'event', 'posts_per_page' => 30) );
if (have_posts()) : while (have_posts()) : the_post();?>
<li class="sixcol cf">
<article class="event cf">
<a class="cf" href="<?php echo the_permalink(); ?>">
<h5 class="text-center"><?php the_title(); ?></h5>
</a>
<br>
<a class="cf" href="<?php echo the_permalink(); ?>">
<?php the_post_thumbnail('full', array( 'class' => 'img-center img-responsive event-thumb')); ?>
</a>
<?php the_content() ?>
<section class="event-details">
<section class="event-address cf">
<?php
$adress = $address = $date = $city;
if (get_post_meta($post->ID, '_event_date_value',true) ) {
echo $date. '<i class="fa fa-calendar"></i> ',
$date = get_post_meta($post->ID, '_event_date_value', true);
echo '<br>';
}
if (get_post_meta($post->ID, '_event_address_value',true) ) {
echo $address. '<i class="fa fa-map-marker"></i> ',
$address = get_post_meta($post->ID, '_event_address_value', true);
}
if (get_post_meta($post->ID, '_event_city_value',true) ) {
echo $city. ', ',
$city = get_post_meta($post->ID, '_event_city_value', true);
}
?></section>
</section>
</article>
</li>
<?php
endwhile;
endif; ?>
</ul>
</section>
</div>
</div>
<?php get_footer(); ?>
任何关于php新手的建议都非常受欢迎。 :)
答案 0 :(得分:1)
正如我已经说过的那样,你永远不应该使用query_posts
,因为它打破了主查询和分页。如果您确实需要使用自定义查询,请使用WP_Query
或get_posts
进行自定义查询
从您的网页模板中,我相信您正在使用自定义信息的页面循环,然后使用自定义查询来显示您的活动帖子。
在我继续之前,专家提示,请勿使用:
和endif
以及endwhile
。虽然它是完全有效的PHP,但很难调试,因为代码编辑不支持这种语法。利用旧的忠实的curlies。所有代码编辑都支持它们,并且它们使调试更容易
这就是您的代码应该是这样的:(我已经删除了标记和模板标记,坦率地说,从平板电脑发布并不是很有趣所有代码)
// Page main loop, the main query
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// Your markup and template tags
}
}
// Add you custom upcoming events heading here
// Now for our loop to show event posts
$args = array(
'post_type' = 'event',
'posts_per_page' => 30
);
$q = new WP_Query( $args );
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
// Your custom loop markup and template tags
}
wp_reset_postdata();
}
您完成的代码应如下所示:
<?php
/*
Template Name: Event
*/
?>
<?php get_header(); ?>
<?php
if (have_posts()) {
while (have_posts()) {
the_post();
if ( get_post_meta($post->ID, '_ct_hdr_value') ) { ?>
<div class="page-name innerpage<?php echo $post->post_name; ?>">
<div class="row">
<div class="twelvecol">
<h1 class="page-h1"><?php the_title(); ?> </h1>
</div>
</div>
</div>
<?php } ?>
<div class="row">
<div class="page-container">
<div class="row">
<div class="content twelvecol">
<?php the_content(); ?>
</div>
<?php
}
}
?>
</div>
</div>
<section class="events cf">
<h3 class="fancy">
<span>Upcoming events</span>
</h3>
<ul id="office-list" class="cf">
<?php
$args = array(
'post_type' = 'event',
'posts_per_page' => 30
);
$q = new WP_Query( $args );
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post(); ?>
<li class="sixcol cf">
<article class="event cf">
<a class="cf" href="<?php echo the_permalink(); ?>">
<h5 class="text-center"><?php the_title(); ?></h5>
</a>
<br>
<a class="cf" href="<?php echo the_permalink(); ?>">
<?php the_post_thumbnail('full', array( 'class' => 'img-center img-responsive event-thumb')); ?>
</a>
<?php the_content() ?>
<section class="event-details">
<section class="event-address cf">
<?php
$adress = $address = $date = $city;
if (get_post_meta($post->ID, '_event_date_value',true) ) {
echo $date. '<i class="fa fa-calendar"></i> ',
$date = get_post_meta($post->ID, '_event_date_value', true);
echo '<br>';
}
if (get_post_meta($post->ID, '_event_address_value',true) ) {
echo $address. '<i class="fa fa-map-marker"></i> ',
$address = get_post_meta($post->ID, '_event_address_value', true);
}
if (get_post_meta($post->ID, '_event_city_value',true) ) {
echo $city. ', ',
$city = get_post_meta($post->ID, '_event_city_value', true);
}
?>
</section>
</section>
</article>
</li>
<?php
}
wp_reset_postdata();
}
?>
</ul>
</section>
</div>
</div>
<?php get_footer(); ?>