短码内的自定义POST类型循环

时间:2011-02-04 作者:Noel Tock

我真的很不明白为什么这不起作用:

我使用一个快捷码来显示对自定义帖子类型+分类法的查询,这是其中的一部分:

        // - 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

然后在这里,它通常会显示标题、内容等(只是没有自定义帖子类型的内容)

有人知道我做错了什么吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:t31os 整理而成

注意:尝试获取非对象的属性

会把那联系起来吗$post 在您的函数中没有作用域。一个简单的解决方案就是全球化$post 因此,它具有范围,有效地修复了错误。

但是,无论何时创建查询或运行循环并调用the_post 方法这使您可以访问WordPresstemplate tags.

而不是把你可以称之为get_the_ID() 当然,它应该包含给定帖子的id(即循环迭代的当前帖子)。

将问题行更新为。。

$custom = get_post_custom( get_the_ID() );
这应该可以解决问题,当然也要注意给予$post 函数内部的作用域也可以工作,只是看起来不像是诗意的!;)

回答提问者一个小问题,你打电话的时候在找什么get_post_custom, 您是在检查某些特定的元键,还是在找到的每个元项上循环?如果你感兴趣的话,那里可能有一些改进的空间。

结束

相关推荐

Paging in a sidebar mini loop

我切换到了另一个主题,并决定用其中的一些默认代码制作一个小部件,在自定义循环中显示我的美味帖子、推特帖子、su帖子和youtube视频(不包括主循环中的这些类别)。但是现在。。。分页不再工作。我制作了这个小部件:// =============================== EDL Sidebar Posts Widget ====================================== class SidebarPosts extends WP_Widget { &#x