在我正在编写的插件中使用WP\\u Query和multisite时,我遇到了一个奇怪的问题,该插件挂钩到add\\u meta\\u框中。我想在元框中的下拉列表中显示所有帖子标题。
在第2个博客中添加或编辑一篇文章(可以是任何博客编号)时,我会在第1个博客中循环,并从自定义的文章类型中获取文章标题,以填充到select下拉列表中。这是应该的,但在此过程中,我的摘录中的文本被替换为循环最后一篇文章中的摘录。
我已禁用所有插件。我已在所有网站上启用2015主题。我正在使用wordpress 4.1。我试过只发帖子而不是自定义帖子,但问题仍然存在。下面是我正在使用的代码:
switch_to_blog( 1 );
$qry_args = array(
\'post_status\' => \'publish\',
\'post_type\' => $typenow,
\'posts_per_page\' => -1,
);
$blog_query = new WP_Query( $qry_args );
if ( $blog_query->have_posts() ) {
while ( $blog_query->have_posts() ) {
$blog_query->the_post();
// get_the_ID(); and put in in an <option></option>
}
}
wp_reset_postdata();
restore_current_blog();
我已经将问题的根源缩小到了$blog\\u query->the\\u post()这一行;
有人能指出为什么我在博客2中的一篇文章的摘录在循环浏览博客1时被替换为博客1中的一篇文章的摘录吗?我对编写插件相当陌生,所以也许我做错了什么,我对此一无所知。
感谢您的帮助,
阿德里安
EDIT:
我刚刚又做了一些测试,发现插件查询监视器出现了以下php警告:
PHP error:
正在尝试获取非对象的属性
Count:
6
Location:Call Stack:
map\\u meta\\u cap()
WP\\u User->has\\u cap()
current\\u User\\u can()meta\\u form()
post\\u custom\\u meta\\u box()
do\\u meta\\u box()
当我把上面的代码放在admin\\u footer而不是add\\u meta\\u框中时,问题就解决了。所以这可能是个时间问题??如果是,我如何在add\\u meta\\u框中查询我的帖子?