Php 对非对象调用成员函数have_posts()

Php 对非对象调用成员函数have_posts(),php,wordpress,Php,Wordpress,我一直在尝试在一个分类页面的网格视图中显示我网站的帖子。为此,我实现了以下代码: <div class="row-fluid"> <div class="span6 featured-block"> <?php while($block1Featured->have_posts()): $block1Featured->the_post(); ?> <a class="featured_image" href="<?php the_p

我一直在尝试在一个分类页面的网格视图中显示我网站的帖子。为此,我实现了以下代码:

<div class="row-fluid">
<div class="span6 featured-block">
<?php while($block1Featured->have_posts()): $block1Featured->the_post(); ?>

<a class="featured_image" href="<?php the_permalink();?> "target="_blank">

 <?php if ((function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) { 

   $image_id = get_post_thumbnail_id(); 

   $image_url = wp_get_attachment_image_src($image_id,'large');

   $image_url = $image_url[0];

   if(!@getimagesize($image_url)){

   $image_url = "/wp-content/uploads/2014/02/logo2.jpg";

   } 

   $blogurl = get_bloginfo('url'); 

   $image_url = str_replace($blogurl, '', $image_url);

  ?>

   <img src="<?php echo bloginfo('template_url'); ?>/thumb.php?src=<?php echo   ($image_url); ?>&amp;w=390&amp;h=216&amp;zc=1&amp;q=100" alt="<?php echo the_title(); ?>" />

 <?php }

 else { ?> 


   <img src="<?php echo bloginfo('template_url'); ?>/thumb.php?src=<?php echo "http://www.nepaljapan.com/wp-content/uploads/2014/02/logo2.jpg"; ?>&amp;w=390&amp;h=216&amp;zc=1&amp;q=100" alt="<?php echo the_title(); ?>" />


 <?php }?>
</a>
<a href="<?php the_permalink();?>" target="_blank">
<h2><?php the_title(); ?></h2></a>
<p><?php echo excerpt(37); ?>
<?php endwhile; ?>
</div>
</div>


但是我面临着这个代码的问题。 这给出了如下错误:

致命错误:对第15行/home/npjp/public\u html/wp content/themes/nepaljapan/content-category.php中的非对象调用成员函数have_posts()

我的代码第15行是

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

有什么问题?我真的做对了吗?? 非常困惑。 请帮帮我


提前感谢您

您的自定义查询有一些问题。您可以使用在wordpress中编写自定义查询:

<?php
$block1Featured= new WP_Query( 'category_name=staff+news' );

if ( $block1Featured->have_posts() ) : ?>
    <!-- the loop -->
        <?php while ( $block1Featured->have_posts() ) : $block1Featured->the_post(); ?>
        <h2><?php the_title(); ?></h2>
        <?php endwhile; ?>
    <!-- end of the loop -->
    <!-- pagination here -->
    <?php wp_reset_postdata(); ?>
<?php else:  ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>


执行调试,在while循环之前添加:
如果(!is_object($block1Featured)){var_dump($block1Featured);die()}
如果没有产生任何结果,请检查每个迭代$block1Featured不是对象?
echo gettype($block1Featured)
返回什么?如何编译对象$block1Featured?只需使用while(have_posts()):the_post();它不是OOP,而是过程性的,因此代码是正确的,$block1Featured不是对象。另外:have_posts()可以作为对象的方法访问,但如果您从标准循环中获得自定义参数,则需要实例化该对象。您应该有$block1Featured=new WP_Query();在某个地方,传递自定义查询。