我有以下非常严格的前瞻性代码,但它不起作用。我已经多次写过这样的查询,但这次我遇到了一个非常奇怪的问题。
$args = array (
'post_type' => 'diapers',
'post_status' => 'publish',
'posts_per_page' => '3'
);
$products = new WP_Query( $args );
if ( $products->have_posts() ) {
?>
<div class="more-products">
<div class="col-xs-12 col-md-4">
<h3 class="more-products-title text-center text-md-right">
<?php
_e('more products', 'z');
?>
</h3>
</div>
<div class="col-xs-12 col-md-8">
<div class="row">
<?php
while ( $products->have_posts() ) {
$products->the_post();
?>
<div class="col-xs-12 col-md-4">
<?php the_title(); ?>
</div>
<?php
}
?>
</div>
</div>
</div>
<?php
}
但是我收到以下错误:
Fatal error: Call to a member function have_posts() on a non-object in /var/www/projects/no-company/wp-content/themes/babies/single-diapers.php on line 82
Call Stack
# Time Memory Function Location
1 0.0000 234248 {main}( ) .../index.php:0
2 0.0001 234696 require( '/project-path/wp-blog-header.php' ) .../index.php:17
3 0.0302 2471776 require_once( '/project-path/wp-includes/template-loader.php' ) .../wp-blog-header.php:16
4 0.0374 2594376 include( '/project-path/wp-content/themes/babies/single-diapers.php' ) .../template-loader.php:74
是否有人可以看到此代码有问题?我试过了,但我看不出这个代码有什么问题。
此外,您应该知道,我已print_r
$products
在while ( $products->have_posts() )
和$products
包含数据之前尝试print_r
。
另外,我在$products->the_post()
之后尝试了循环中的0
,在第一个循环中我对象中的数据是正常的,但是在第二个循环中,我得到了结果Ext.create('Ext.form.Panel', {
bodyPadding: 10,
defaultType: 'textfield',
fieldDefaults: {
labelAlign: 'right',
labelWidth: 150
},
renderTo: Ext.getBody(),
standardSubmit: true,
title: 'Form',
width: 400,
items: [
{
fieldBodyCls: 'x-form-trigger-wrap-default x-form-text x-form-text-default',
fieldLabel: 'Displayfield with link',
name: 'field01',
value: 'Some text <a href=http://www.yoururl.com>www.yoururl.com</a>',
xtype: 'displayfield'
},{
fieldLabel: 'Textfield',
name: 'field02',
value: 'default',
xtype: 'textfield'
}]
});
。
最后,我在代码中使用了相同的代码结构到另一个模板文件并且有效,但是这个特定的代码结构不会起作用:(
答案 0 :(得分:2)
您可以使用以下内容停止错误消息(但它仍然无法解决非对象问题)。
if ( is_object($products) && $products->have_posts() ) {
这意味着如果代码对其他人失败,则不会给他们带来致命错误。但是,您仍然需要找出为什么在您期待对象时没有对象的原因。