Get posts by menu ID

时间:2011-06-16 作者:Jules

我有点困在这里了。我在Wordpress上有一个菜单,里面有一些帖子。我想要的是将所有帖子作为对象检索。

我想我已经很接近了,但是SQL查询似乎没有按我所希望的那样工作。

这是迄今为止我掌握的数据:

$querystr = "
SELECT wposts.* FROM wp_posts wposts
LEFT JOIN wp_postmeta wmeta ON wposts.ID = wmeta.post_id
LEFT JOIN wp_term_relationships wrel ON wrel.object_id = wmeta.meta_value
LEFT JOIN wp_terms wterms ON wrel.term_taxonomy_id = wterms.term_id
WHERE wterms.term_id= $menu_id
";

$posts = $wpdb->get_results($querystr, OBJECT);
我很确定这是一个愚蠢的小SQL逻辑错误,但我真的找不到它。。

2 个回复
最合适的回答,由SO网友:Maor Barazany 整理而成

我最近也需要同样的东西,我有分类菜单,我需要得到菜单中的分类。在WP核心挖掘了几个小时后,我发现wp_get_nav_menu_items() 帮助我的功能。

我终于带着这个来了,220是我的菜单号

$navcat = wp_get_nav_menu_items(\'220\');
    foreach ($navcat as $obj) {
        $catid = $obj->object_id;
        $category = get_category($catid);
        ...
        ...
    }
所以,如果你有一个导航菜单的帖子,我想你也可以这样做,像这样的事情应该可以-

$nav_items = wp_get_nav_menu_items(\'220\');  
    foreach ($nav_items as $obj) {
        $objid = $obj->object_id;
        $postobj = get_post($objid);

        //do stuff with the post..
    }
我认为它可以为您节省一些复杂的mySQL查询。。。

SO网友:kaiser

有一个将导航菜单作为对象的函数:wp_get_nav_menu_object() - 项目(帖子)位于对象内部,可以访问。

结束

相关推荐

WordPress和MySQL:尝试使用PHP打印来自user_meta自定义域数据的数据

我在MySQL数据库中有一些自定义的user\\u元字段。数据存储在my DB中,如下所示:meta\\u键称为“paypal\\u用户”,信息存储在meta\\u值列中,如下所示:O: 11:“Paypal\\u用户”:9:{s:8:“持续时间”;s:1:“持续时间\\u类型”;s:1:“y”;s:6:“金额”;s:2:“30”;s:8:“货币”;s:3:“英镑”;s:13:“上次付款日期”;s:10:“2011-02-12”;s:11:“到期日期”;s:10:“2012-02-12”;s:12:“账户