自定义元框中的值在帖子中重复

时间:2015-06-11 11:15:35

标签: php wordpress

我已经为WordPress中的事件创建了自定义帖子类型,现在我正在尝试将它们列在我名为Events的页面模板上的自定义元框的值中。

正在重复元框中的值,然后是一个模式:

  • 最新帖子很好,

  • 旧帖子会显示最新帖子的元框值和值

  • 依此类推。

这是正在发生的事情的屏幕截图:enter image description here

这是一个显示帖子的查询:

<?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新手的建议都非常受欢迎。 :)

1 个答案:

答案 0 :(得分:1)

正如我已经说过的那样,你永远不应该使用query_posts,因为它打破了主查询和分页。如果您确实需要使用自定义查询,请使用WP_Queryget_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(); ?>