我真的很不明白为什么这不起作用:
我使用一个快捷码来显示对自定义帖子类型+分类法的查询,这是其中的一部分:
// - arguments -
$args = array(
\'post_type\' => \'customposttypename\',
\'taxonomyname\' => \'alpha\',
\'post_status\' => \'publish\',
);
// - query -
$my_query = null;
$my_query = new WP_query($args);
while ($my_query->have_posts()) : $my_query->the_post();
// - variables -
$custom = get_post_custom($post->ID);
。。。然后变量继续。但问题是,当我运行循环时,它会显示所有默认的帖子内容(即标题、内容等),但拒绝显示自定义帖子类型的内容,并在上面的最后一行(第145行)暂停,即。
$custom = get_post_custom($post->ID);
告诉我下面的错误。。
注意:未定义的变量:在C:\\xamplite中发布。。。\\功能。php在线145
注意:正在尝试获取C:\\xamplite中非对象的属性。。。\\功能。php在线145
然后在这里,它通常会显示标题、内容等(只是没有自定义帖子类型的内容)
有人知道我做错了什么吗?
非常感谢。
最合适的回答,由SO网友:t31os 整理而成
注意:尝试获取非对象的属性
会把那联系起来吗$post
在您的函数中没有作用域。一个简单的解决方案就是全球化$post
因此,它具有范围,有效地修复了错误。
但是,无论何时创建查询或运行循环并调用the_post
方法这使您可以访问WordPresstemplate tags.
而不是把你可以称之为get_the_ID()
当然,它应该包含给定帖子的id(即循环迭代的当前帖子)。
将问题行更新为。。
$custom = get_post_custom( get_the_ID() );
这应该可以解决问题,当然也要注意给予
$post
函数内部的作用域也可以工作,只是看起来不像是诗意的!;)
回答提问者一个小问题,你打电话的时候在找什么get_post_custom
, 您是在检查某些特定的元键,还是在找到的每个元项上循环?如果你感兴趣的话,那里可能有一些改进的空间。