[wp-hackers] how can I use the create new menu function for making a default menu

Davit Barbakadze jayarjo at gmail.com
Sat Jul 31 05:51:28 UTC 2010


Great example, thanks! I will be using these too.

On Sat, Jul 31, 2010 at 4:44 AM, Mike Schinkel
<mikeschinkel at newclarity.net> wrote:
> Hi Jared:
>
> Do you mean these found in /wp-includes/nav-menu.php?
>
> Create Menu:
>        $menu_id = wp_create_nav_menu( $menu_name );
>
> Create Menu Items:
>        $menu = array(
>                'menu-item-object-id' => 0,
>                'menu-item-object' => '',
>                'menu-item-parent-id' => 0,
>                'menu-item-position' => 0,
>                'menu-item-type' => 'custom',
>                'menu-item-title' => '',
>                'menu-item-url' => '',
>                'menu-item-description' => '',
>                'menu-item-attr-title' => '',
>                'menu-item-target' => '',
>                'menu-item-classes' => '',
>                'menu-item-xfn' => '',
>                'menu-item-status' => '',
>        );
>        $menu_item_db_id = wp_update_nav_menu_item( $menu_id, 0, $menu);
>
> Update Menu Items:
>        wp_update_nav_menu_item( $menu_id, $menu_item_db_id, $menu);
>
> I've used them to create menus and menu items automatically.
>
> To understand the parameters create some menus in the admin and then take a look at the values created for different types of menu items in wp_postmeta.
>
> Hope this helps?
>
> -Mike
>
> On Jul 30, 2010, at 8:25 PM, Jared Williams wrote:
>
>> Hi,
>> I know the menu system needs lots of work still, but I was wondering if
>> anyone knows of a way to make use of whatever function(s) the 'Create Menu'
>> does when you make a new custom named menu in the dashboard to make a
>> pre-made menu to go along with a registered menu location etc. This would be
>> nice so that when a theme were installed that has registered menus in it,
>> the menu name you specify in the code would be created upon installing, and
>> deleted when uninstalling a theme.
>>
>> I've searched for some kind of solution to this, and have studied the code
>> in nav-menus.php and other files with 3.0 source code. This is just about
>> the only thing I am unable to figure out with 3.0, at least that I have
>> tried to do so far.
>> I figured here is probably the best place to ask such a question.
>>
>> Thanks,
>>
>> Jared Williams
>> New2WP.com
>>
>>
>> On Fri, Jul 30, 2010 at 11:33 AM,
>> <wp-hackers-request at lists.automattic.com>wrote:
>>
>>> Send wp-hackers mailing list submissions to
>>>       wp-hackers at lists.automattic.com
>>>
>>> To subscribe or unsubscribe via the World Wide Web, visit
>>>       http://lists.automattic.com/mailman/listinfo/wp-hackers
>>> or, via email, send a message with subject or body 'help' to
>>>       wp-hackers-request at lists.automattic.com
>>>
>>> You can reach the person managing the list at
>>>       wp-hackers-owner at lists.automattic.com
>>>
>>> When replying, please edit your Subject line so it is more specific
>>> than "Re: Contents of wp-hackers digest..."
>>>
>>>
>>> Today's Topics:
>>>
>>>  1. Re: any way to clean after theme when it gets deleted?
>>>     (Davit Barbakadze)
>>>  2. Re: any way to clean after theme when it gets deleted?
>>>     (Ashish Saini)
>>>  3. Re: any way to clean after theme when it gets deleted?
>>>     (Andrew Nacin)
>>>  4. Re: any way to clean after theme when it gets deleted?
>>>     (Ashish Saini)
>>>  5. Re: any way to clean after theme when it gets deleted?
>>>     (Davit Barbakadze)
>>>  6. Re: any way to clean after theme when it gets deleted?
>>>     (Andrew Nacin)
>>>  7. switch_to_blog in WP3 (Bill Dennen)
>>>  8. Re: any way to clean after theme when it gets deleted?
>>>     (esmi at quirm dot net)
>>>
>>>
>>> ----------------------------------------------------------------------
>>>
>>> Message: 1
>>> Date: Fri, 30 Jul 2010 17:17:51 +0400
>>> From: Davit Barbakadze <jayarjo at gmail.com>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTikhpSNdc-VtaLnOU2py=b+90tFjpCFLZeW+ecS6 at mail.gmail.com<b%2B90tFjpCFLZeW%2BecS6 at mail.gmail.com>
>>>>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> It's not about switching (activate/deactivate), but deleting. It would
>>> be pretty logical to remove all the stuff that theme has created on
>>> activation.
>>>
>>> On Fri, Jul 30, 2010 at 3:45 PM, Ashish Saini
>>> <ashishsainiashfame at gmail.com> wrote:
>>>> Hi Davit,
>>>>
>>>> I think a better option would be to provide uninstall function as leaving
>>>> the options in the database makes sense as the user may switch back and
>>> so
>>>> it will save the pain of configuring it.
>>>>
>>>> Thanks & Regards
>>>> Ashish Saini aka Ashfame
>>>> (Deserve Before You Desire)
>>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com |
>>> Twitter
>>>> : http://twitter.com/ashfame
>>>>
>>>>
>>>> On Fri, Jul 30, 2010 at 4:44 PM, <diana.j.wiadji at hotmail.com> wrote:
>>>>
>>>>> $
>>>>> ------Original Message------
>>>>> From: Davit Barbakadze
>>>>> Sender: wp-hackers-bounces at lists.automattic.com
>>>>> To: wp-hackers at lists.automattic.com
>>>>> ReplyTo: wp-hackers at lists.automattic.com
>>>>> Subject: [wp-hackers] ?any way to clean after theme when it gets
>>> deleted?
>>>>> Sent: Jul 30, 2010 18:02
>>>>>
>>>>> I think everyone uses options and maybe even tables in their themes
>>>>> nowadays. Is there any way coder can clean up after theme - delete
>>>>> options, remove tables - when it get's uninstalled. Something similar
>>>>> to what we have for plugins?
>>>>>
>>>>> --
>>>>> Davit Barbakadze
>>>>> _______________________________________________
>>>>> wp-hackers mailing list
>>>>> wp-hackers at lists.automattic.com
>>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>>
>>>>>
>>>>>
>>>>> Sent from my BlackBerry? smartphone on 3
>>>>> _______________________________________________
>>>>> wp-hackers mailing list
>>>>> wp-hackers at lists.automattic.com
>>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>>
>>>> _______________________________________________
>>>> wp-hackers mailing list
>>>> wp-hackers at lists.automattic.com
>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>
>>>
>>>
>>>
>>> --
>>> Davit Barbakadze
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 2
>>> Date: Fri, 30 Jul 2010 18:55:18 +0530
>>> From: Ashish Saini <ashishsainiashfame at gmail.com>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTikU0qcxQMMVgRwTrNOEHjXoUO_o0r44C+=_96Z+ at mail.gmail.com<96Z%2B at mail.gmail.com>
>>>>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> You didn't get my point. I said you should provide an uninstaller function
>>> that wipes out data and it shouldn't be automated upon deactivation.
>>>
>>> I would hate a theme which will ask for options to be configured again when
>>> I just switch back to another theme and now I want the previous theme back.
>>>
>>> Thanks & Regards
>>> Ashish Saini aka Ashfame
>>> (Deserve Before You Desire)
>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com |
>>> Twitter
>>> : http://twitter.com/ashfame
>>>
>>>
>>> On Fri, Jul 30, 2010 at 6:47 PM, Davit Barbakadze <jayarjo at gmail.com>
>>> wrote:
>>>
>>>> It's not about switching (activate/deactivate), but deleting. It would
>>>> be pretty logical to remove all the stuff that theme has created on
>>>> activation.
>>>>
>>>> On Fri, Jul 30, 2010 at 3:45 PM, Ashish Saini
>>>> <ashishsainiashfame at gmail.com> wrote:
>>>>> Hi Davit,
>>>>>
>>>>> I think a better option would be to provide uninstall function as
>>> leaving
>>>>> the options in the database makes sense as the user may switch back and
>>>> so
>>>>> it will save the pain of configuring it.
>>>>>
>>>>> Thanks & Regards
>>>>> Ashish Saini aka Ashfame
>>>>> (Deserve Before You Desire)
>>>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com |
>>>> Twitter
>>>>> : http://twitter.com/ashfame
>>>>>
>>>>>
>>>>> On Fri, Jul 30, 2010 at 4:44 PM, <diana.j.wiadji at hotmail.com> wrote:
>>>>>
>>>>>> $
>>>>>> ------Original Message------
>>>>>> From: Davit Barbakadze
>>>>>> Sender: wp-hackers-bounces at lists.automattic.com
>>>>>> To: wp-hackers at lists.automattic.com
>>>>>> ReplyTo: wp-hackers at lists.automattic.com
>>>>>> Subject: [wp-hackers]  any way to clean after theme when it gets
>>>> deleted?
>>>>>> Sent: Jul 30, 2010 18:02
>>>>>>
>>>>>> I think everyone uses options and maybe even tables in their themes
>>>>>> nowadays. Is there any way coder can clean up after theme - delete
>>>>>> options, remove tables - when it get's uninstalled. Something similar
>>>>>> to what we have for plugins?
>>>>>>
>>>>>> --
>>>>>> Davit Barbakadze
>>>>>> _______________________________________________
>>>>>> wp-hackers mailing list
>>>>>> wp-hackers at lists.automattic.com
>>>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>>>
>>>>>>
>>>>>>
>>>>>> Sent from my BlackBerry? smartphone on 3
>>>>>> _______________________________________________
>>>>>> wp-hackers mailing list
>>>>>> wp-hackers at lists.automattic.com
>>>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>>>
>>>>> _______________________________________________
>>>>> wp-hackers mailing list
>>>>> wp-hackers at lists.automattic.com
>>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Davit Barbakadze
>>>> _______________________________________________
>>>> wp-hackers mailing list
>>>> wp-hackers at lists.automattic.com
>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 3
>>> Date: Fri, 30 Jul 2010 09:45:12 -0400
>>> From: Andrew Nacin <wp at andrewnacin.com>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTi=ua3FWx5UJnGs9TpxYbqk_dN_GhW_bxbas01ON at mail.gmail.com>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> On Fri, Jul 30, 2010 at 9:25 AM, Ashish Saini
>>> <ashishsainiashfame at gmail.com>wrote:
>>>
>>>> You didn't get my point. I said you should provide an uninstaller
>>> function
>>>> that wipes out data and it shouldn't be automated upon deactivation.
>>>>
>>>
>>> Not sure you got his point -- I believe Davit is referring to the
>>> implementation of an uninstall hook for themes. He's pretty clear he'd want
>>> that triggered on deletion, not deactivation. Basically, how it works for
>>> plugins.
>>>
>>> I think implementing themes uninstall hooks would be a logical future step.
>>> We could start by removing items created using the theme_mod functions,
>>> which I don't think most themes use, but we use it for storing metadata for
>>> custom backgrounds and headers.
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 4
>>> Date: Fri, 30 Jul 2010 19:48:22 +0530
>>> From: Ashish Saini <ashishsainiashfame at gmail.com>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTim7MQR2P6yOUa0j1TiPfWiaXDrVXfJM94Xovm-v at mail.gmail.com>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> Andrew, I knew that. I just replied back with a possible solution for his
>>> case.
>>>
>>> Thanks & Regards
>>> Ashish Saini aka Ashfame
>>> (Deserve Before You Desire)
>>> Homepage : http://www.ashfame.com | Blog : http://blog.ashfame.com |
>>> Twitter
>>> : http://twitter.com/ashfame
>>>
>>>
>>> On Fri, Jul 30, 2010 at 7:15 PM, Andrew Nacin <wp at andrewnacin.com> wrote:
>>>
>>>> On Fri, Jul 30, 2010 at 9:25 AM, Ashish Saini
>>>> <ashishsainiashfame at gmail.com>wrote:
>>>>
>>>>> You didn't get my point. I said you should provide an uninstaller
>>>> function
>>>>> that wipes out data and it shouldn't be automated upon deactivation.
>>>>>
>>>>
>>>> Not sure you got his point -- I believe Davit is referring to the
>>>> implementation of an uninstall hook for themes. He's pretty clear he'd
>>> want
>>>> that triggered on deletion, not deactivation. Basically, how it works for
>>>> plugins.
>>>>
>>>> I think implementing themes uninstall hooks would be a logical future
>>> step.
>>>> We could start by removing items created using the theme_mod functions,
>>>> which I don't think most themes use, but we use it for storing metadata
>>> for
>>>> custom backgrounds and headers.
>>>> _______________________________________________
>>>> wp-hackers mailing list
>>>> wp-hackers at lists.automattic.com
>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 5
>>> Date: Fri, 30 Jul 2010 18:32:12 +0400
>>> From: Davit Barbakadze <jayarjo at gmail.com>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTi=KdyyghUgN0-U46rkDThdGaYGmR1SH8c5F+w09 at mail.gmail.com<KdyyghUgN0-U46rkDThdGaYGmR1SH8c5F%2Bw09 at mail.gmail.com>
>>>>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> theme_mod functions? what do they do?
>>>
>>> On Fri, Jul 30, 2010 at 5:45 PM, Andrew Nacin <wp at andrewnacin.com> wrote:
>>>> On Fri, Jul 30, 2010 at 9:25 AM, Ashish Saini
>>>> <ashishsainiashfame at gmail.com>wrote:
>>>>
>>>>> You didn't get my point. I said you should provide an uninstaller
>>> function
>>>>> that wipes out data and it shouldn't be automated upon deactivation.
>>>>>
>>>>
>>>> Not sure you got his point -- I believe Davit is referring to the
>>>> implementation of an uninstall hook for themes. He's pretty clear he'd
>>> want
>>>> that triggered on deletion, not deactivation. Basically, how it works for
>>>> plugins.
>>>>
>>>> I think implementing themes uninstall hooks would be a logical future
>>> step.
>>>> We could start by removing items created using the theme_mod functions,
>>>> which I don't think most themes use, but we use it for storing metadata
>>> for
>>>> custom backgrounds and headers.
>>>> _______________________________________________
>>>> wp-hackers mailing list
>>>> wp-hackers at lists.automattic.com
>>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>>
>>>
>>>
>>>
>>> --
>>> Davit Barbakadze
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 6
>>> Date: Fri, 30 Jul 2010 10:38:48 -0400
>>> From: Andrew Nacin <wp at andrewnacin.com>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTinDDOQTQyaZdnmazoiGn6HSGXVW9eLkffXm0HZw at mail.gmail.com>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> On Fri, Jul 30, 2010 at 10:32 AM, Davit Barbakadze <jayarjo at gmail.com
>>>> wrote:
>>>
>>>> theme_mod functions? what do they do?
>>>
>>>
>>> Rudimentary options storage for themes. Each theme's mods are stored in a
>>> single DB option row in the form of mod_{$theme}.
>>>
>>> Locations in core:
>>> ./wp-includes/theme.php:1270:function get_theme_mod($name, $default =
>>> false)
>>> {
>>> ./wp-includes/theme.php:1289:function set_theme_mod($name, $value) {
>>> ./wp-includes/theme.php:1311:function remove_theme_mod( $name ) {
>>> ./wp-includes/theme.php:1333:function remove_theme_mods() {
>>>
>>> Codex pages:
>>> http://codex.wordpress.org/Function_Reference/get_theme_mod
>>> http://codex.wordpress.org/Function_Reference/set_theme_mod
>>> http://codex.wordpress.org/Function_Reference/remove_theme_mod
>>> http://codex.wordpress.org/Function_Reference/remove_theme_mods
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 7
>>> Date: Fri, 30 Jul 2010 11:29:11 -0400
>>> From: Bill Dennen <dennen at gmail.com>
>>> Subject: [wp-hackers] switch_to_blog in WP3
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID:
>>>       <AANLkTimgcjBN35jVm7+Q_9CsGcuJJdhL9E-vjWTCLfe3 at mail.gmail.com<AANLkTimgcjBN35jVm7%2BQ_9CsGcuJJdhL9E-vjWTCLfe3 at mail.gmail.com>
>>>>
>>> Content-Type: text/plain; charset=ISO-8859-1
>>>
>>> Hi,
>>>
>>> I wrote a plugin that allows one blog to pull posts in from another
>>> blog via shortcode. I call it get-news. The syntax of the shortcode is
>>> something like this:
>>>
>>> [get-news site_name="news" numberposts="10" show_dates="0"]
>>>
>>> In short, what this code does is switch to the blog located at /news/
>>> and grab the 10 most recent posts and display them on the current
>>> blog. There are other options, as well - like pulling posts by
>>> category or tags, showing thumbnails, etc.
>>>
>>> My code uses switch_to_blog to do this. I've read that this function
>>> has a heavy performance hit. But, we've been using it with WP Super
>>> Cache and it has worked well for us in WPMU 2.9.2. Plus, at this
>>> point, my plugin is not meant for distribution -- it's used only on
>>> the site I manage. (That could change...)
>>>
>>> Now, my code is broken in WP3.x. Permalinks are incorrect and
>>> thumbnails do not work properly.
>>>
>>> I believe it's this bug, which is now listed as a "wontfix":
>>>
>>> http://core.trac.wordpress.org/ticket/12040
>>>
>>> In the bug report, there is mention that this bug could be 'fixed' via
>>> a plugin via the switch_blog hook.
>>>
>>> I'm looking for alternate suggestions for ways to do this. At this
>>> point, this bug is holding us back from going with WP3, which we'd
>>> like to do for many reasons!
>>>
>>> One option I toyed with initially was using RSS feeds, but I could not
>>> get the thumbnails over that way.
>>>
>>> Looking forward to any suggestions.
>>>
>>> Thanks-
>>> Bill
>>>
>>>
>>> ------------------------------
>>>
>>> Message: 8
>>> Date: Fri, 30 Jul 2010 16:33:08 +0100
>>> From: esmi at quirm dot net <esmi at quirm.net>
>>> Subject: Re: [wp-hackers] any way to clean after theme when it gets
>>>       deleted?
>>> To: wp-hackers at lists.automattic.com
>>> Message-ID: <4C52F0B4.4030908 at quirm.net>
>>> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>>
>>> on 30/07/2010 15:38 Andrew Nacin said the following:
>>>> On Fri, Jul 30, 2010 at 10:32 AM, Davit Barbakadze <jayarjo at gmail.com
>>>> wrote:
>>>
>>>>> theme_mod functions? what do they do?
>>>
>>>> Rudimentary options storage for themes. Each theme's mods are stored in a
>>>> single DB option row in the form of mod_{$theme}.
>>>
>>> <snip>
>>>
>>> It's the multiple single rows in the db that I'm not keen on. Most of
>>> the time, I've been using a single row in the options table to store a
>>> serialized array. Each theme then has a manual "reset" option which
>>> removes all stored theme options but, thus far, I haven't found a way to
>>> trigger the reset on theme deletion.
>>>
>>> Mel / esmi
>>> --
>>> WordPress theme developer
>>> http://quirm.net
>>> http://blackwidows.co.uk
>>>
>>>
>>> ------------------------------
>>>
>>> _______________________________________________
>>> wp-hackers mailing list
>>> wp-hackers at lists.automattic.com
>>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>>
>>>
>>> End of wp-hackers Digest, Vol 66, Issue 120
>>> *******************************************
>>>
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>



-- 
Davit Barbakadze


More information about the wp-hackers mailing list