WordPress每次在任何地方都会返回相同的帖子ID!

时间:2012-01-03 作者:2hamed

在我最近开发的一个主题中,发生了一些奇怪的事情
当我使用$post->IDget_the_ID() 它总是返回属于我的一个帖子的相同ID<我想知道那里发生了什么?!!!

Edit: 我找到了这种行为背后的原因。我创建了一个小部件,在它里面我使用WP_Query 类(您可以在末尾看到代码),我猜它正在覆盖全局$post。

类TextAds扩展WP\\u小部件{

function TextAds(){

    $widget_ops = array( \'description\' => __( "نمایش تبلیغات متنی", \'appthemes\') );

    $this->WP_Widget(\'textads\', __(\'تبلیغات متنی\', \'appthemes\'), $widget_ops);

}

function widget($args, $instance){

    //global $userdata;

    extract($args);

    if ( !empty($instance[\'title\']) ) {

        $title = $instance[\'title\'];

    } else {

        $title = \'تبلیغات متنی\';

    }

    echo $before_widget;

    $title = apply_filters(\'widget_title\', $title, $instance, $this->id_base);

    $term = get_term_by( \'slug\',\'text\', \'ad_cat\' );

    $text_query = new WP_Query( array(\'post_type\' => APP_POST_TYPE, APP_TAX_CAT => $term->slug, \'ignore_sticky_posts\' => 1 ));

    ?>

                    <h2 class="widgettitle"><?php echo $title; ?></h2>

                    <div class="clr"></div>

                    <?php while ( $text_query->have_posts() ) : $text_query->the_post(); ?>

                        <div class="ad0text"><a href="<?php

                        //$url = get_post_meta(get_the_ID(),\'cp_url\',true);

                        if(stripos($url,\'http://\') === false){

                            $url = \'http://\'.$url;

                        }

                         echo $url; ?>"><?php the_title(); ?></a></div>

                        <div class="divider"></div>

                    <?php endwhile; ?>



    <?php

    echo $after_widget;

}

function form( $instance ) {

?>

        <p><label for="<?php echo $this->get_field_id(\'title\'); ?>"><?php _e(\'عنوان ابزارک:\', \'appthemes\') ?></label>

        <input type="text" class="widefat" id="<?php echo $this->get_field_id(\'title\'); ?>" name="<?php echo $this->get_field_name(\'title\'); ?>" value="<?php if (isset ( $instance[\'title\'])) {echo esc_attr( $instance[\'title\'] );} ?>" /></p>

    <?php

}

    function update( $new_instance, $old_instance ) {

        $instance[\'title\'] = strip_tags(stripslashes($new_instance[\'title\']));

        return $instance;

    }
}

1 个回复
最合适的回答,由SO网友:2hamed 整理而成

啊,真遗憾<我应该用wp_reset_postdata() 在循环的末尾。

结束

相关推荐