在我最近开发的一个主题中,发生了一些奇怪的事情
当我使用$post->ID
和get_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;
}
}