我正在尝试在我自定义的小部件中显示自定义字段,但我无法显示自定义字段。我认为它与我用于在循环中获取帖子ID的变量有关,因为当我将其更改为标准的the_title函数时,小部件可以工作,所以它与我如何调用它有关自定义字段。
我知道自定义字段的关键是“wpcf-promo-title”但是无论我尝试过什么,自定义字段(其中包含侧边栏帖子标题的缩短版本)都不会显示。此代码会显示缩略图,但不会显示促销标题。您可以在http://www.cantstopshipping.com
中查看此操作这是我的代码,包括查询和小部件的前端。
function widget($args, $instance) {
extract( $args );
$title = apply_filters( 'widget_title', empty($instance['title']) ? 'Recent Posts' : $instance['title'], $instance, $this->id_base);
$show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
if ( ! $number = absint( $instance['number'] ) ) $number = 5;
if( ! $cats = $instance["cats"] ) $cats='';
// array to call recent posts.
$crpw_args=array(
'showposts' => $number,
'category__in'=> $cats,
);
$crp_widget = null;
$crp_widget = new WP_Query($crpw_args);
echo $before_widget;
// Widget title
echo $before_title;
echo $instance["title"];
echo $after_title;
// Post list in widget
echo "<ul>\n";
while ( $crp_widget->have_posts() )
{
$crp_widget->the_post();
?>
<li class="crpw-item">
<p style="float:left">
<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent link to <?php the_title_attribute(); ?>" class="crpw-title"><?php the_post_thumbnail('sidebar-small'); ?></a>
</p>
<?php $promotitle = get_post_meta($post->ID, 'wpcf-promo-title', true); ?>
<p style="float:right; width:200px">
<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent link to <?php the_title_attribute(); ?>" class="crpw-title"><?php echo $promotitle; ?></a>
</p>
<?php if ( $show_date ) : ?>
<span class="crpw-date"><?php echo "("; ?><?php echo get_the_date(); ?><?php echo ")"; ?></span>
<?php endif; ?>
</li>
<?php
}
wp_reset_query();
echo "<div class=\"fix\"></div>";
echo "</ul>\n";
echo $after_widget;
}
答案 0 :(得分:0)
您的global $post
似乎缺失了。
但您可以尝试使用get_the_ID()
代替$post->ID
。
你还应该考虑摆脱extract()
,它现在被认为是一种“坏”的做法。
另一件事是您应该使用wp_reset_postdata()
来恢复全局$post
对象。 wp_reset_query()
电话应与query_posts()
电话一起使用。