被重复文章自定义元盒价值(Values from custom meta boxes being r

2019-10-23 08:17发布

我已经创建自定义后类型在WordPress的事件,现在我想从我的页面模板,我叫活动自定义元框列出所有与值一起。

从元框的值被重复,这是遵循的模式:

  • 最新帖子是好的,

  • 较早的帖子显示,从最新帖子的met​​a框的值和,

  • 等等。

这到底是怎么回事的截图:

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

<?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新手任何建议是欢迎。 :)

Answer 1:

正如我已经说过,你不应该使用query_posts ,因为它打破了主查询和分页。 使用WP_Queryget_posts自定义查询,如果你真的需要使用定制查询

从你的页面模板,我相信你正在使用的页面循环定制信息,然后您的自定义查询,以显示你的事件的帖子。

就在我继续,专家提示,不要使用:endifendwhile 。 虽然这是完全合法的PHP,这是很难调试的代码编辑器不支持此语法。 利用老友们花括号中。 所有的代码编辑器支持他们,并且他们做更易于调试

这是你的代码应该是什么样子:( 我已删除的标记和模板标记为坦言,从平板电脑发布不好玩与所有的代码

// 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(); ?>


文章来源: Values from custom meta boxes being repeated in posts
标签: php wordpress