[wp-hackers] Select pages's associated menu items in a specific menu

Lox lox.dev at knc.nc
Wed Jul 28 02:36:24 UTC 2010


Yeah! Thks a lot. The fields I was missing were:

'taxonomy'    => 'nav_menu',
'term'        => $term->slug

Why can't I query for the term_id directly ?
It will save the "$term = get_term($menu_id, 'nav_menu')" query ....

2010/7/28 Mike Schinkel <mikeschinkel at newclarity.net>:
> Lox,
>
> Assuming I got the previous SQL correct I think this is what you are looking for:
>
> http://gist.github.com/493195
>
> The core of that code is here:
>
> /* --------------------------- */
> $post_id = $_GET['post'];
> $menu_id = $_GET['menu'];
>
> $term = get_term($menu_id, 'nav_menu');
>
> $menu_items = new WP_Query(
>        array(
>                'post_type'   => 'nav_menu_item',
>                'post_status' => 'any',
>                'meta_key'    => '_menu_item_object_id',
>                'meta_value'  => $post_id,
>                'showposts'   => -1,
>                'taxonomy'    => 'nav_menu',
>                'term'        => $term->slug,
>        )
> );
> /* --------------------------- */
>
> The key thing to notice is that the menu item post records were related both via post meta (which you figured out) but also via the "nav_menu" taxonomy by term slug (which you hadn't included.)  At first I thought it wasn't going to be possible to do it with WP_Query() but after inspecting the SQL I wrote I realized it was indeed possible, at least what I understood that you needed.
>
> Hope this helps.
>
> -Mike
>
>
> On Jul 27, 2010, at 10:02 PM, Mike Schinkel wrote:
>
>> On Jul 27, 2010, at 8:14 PM, Lox wrote:
>>> 2010/7/28 Mike Schinkel <mikeschinkel at newclarity.net>:
>>>> So do you mean you have menus where a post may be referenced several times
>>>
>>> Sure, but the problem is with posts that may be referenced several
>>> times IN MULTIPLE MENUS.
>>
>> I just wanted to understand what your requirements were.  (BTW, do you frequently have menu options that point to the same post? Hmm..)
>>
>> I was struggling with what you wanted and also with the solution for what I think you are looking for so I decided to do it in "my native language" first, which would be SQL. :)
>>
>> Can you verify that this gives you the results you are looking for?
>>
>> http://gist.github.com/493178
>>
>> Copy the raw file to test.php in the root of your site and call it like this (replacing the URL params with your values of course):
>>
>> http://example.com/test.php?menu=3&post=2
>>
>> Let me know if this is ultimately what you want (I know it's better to use the WordPress API, but we'll get there...)
>>
>> -Mike
>>
>>
>>
>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>



-- 
Lox
lox.dev at knc.nc


More information about the wp-hackers mailing list