logo
Ask your WordPress questions! Pay money and get answers fast! (more info)

Warning: Please do not give out any FTP or ssh credentials to anyone, unless you trust them completely. Giving out login details is dangerous.

If the asker does not get an answer then they have 10 days to request a refund.

$10
regex

wordpress multisite

i use this function
add_action( 'init', 'register_navmenus' );
function register_navmenus() {
global $blog_id;
global $cat1_link;


if ( !is_nav_menu( 'menuonglet'.$blog_id )) {

$menu_id = wp_create_nav_menu( 'menuonglet'.$blog_id );
$menu1 = array(
'menu-item-object-id' => '',
'menu-item-object' => '',
'menu-item-parent-id' => 0,
'menu-item-position' => 1,
'menu-item-type' => 'custom',
'menu-item-title' => 'Appareils auditifs' ,
'menu-item-url' => $cat1_link,
'menu-item-description' => '',
'menu-item-attr-title' => '',
'menu-item-status' => 'publish'
);
wp_update_nav_menu_item( $menu_id, 0, $menu1 );

}
}


when i create a new site, this menu is automatically created.

I need another function like that :
"if a custom menu with a name like 'menuonglet'.$number exist delete this menu, except if $number==$blog_id"

This question has been answered.

jevusi | 04/21/11 at 6:37am Edit


(3) Possible Answers Submitted...

See a chronological view of answers?

Warning: Please do not give out any FTP or ssh credentials to anyone, unless you trust them completely. Giving out login details is dangerous.

  • avatar
    Last edited:
    04/21/11
    6:49am
    Peter Michael says:


    if ( is_nav_menu( 'menuonglet'.$blog_id ) && $number != $blog_id )
    {
    wp_delete_nav_menu( 'menuonglet'.$blog_id )
    }

    • 04/21/11 7:02am

      Peter Michael says:

      Thanks Adam ;-)

    • 04/21/11 7:37am

      jevusi says:

      i had try, that didn't work.

    • 04/21/11 7:39am

      Peter Michael says:

      How did you try? Can we see your full code?

    • 04/21/11 8:33am

      jevusi says:

      add_action( 'init', 'register_navmenus' );

      function register_navmenus() {

      global $blog_id;

      global $cat1_link;

      if ( is_nav_menu( 'menuonglet'.$blog_id ) && $number != $blog_id )

      {

      wp_delete_nav_menu( 'menuonglet'.$blog_id )

      }



      if ( !is_nav_menu( 'menuonglet'.$blog_id )) {



      $menu_id = wp_create_nav_menu( 'menuonglet'.$blog_id );

      $menu1 = array(

      'menu-item-object-id' => '',

      'menu-item-object' => '',

      'menu-item-parent-id' => 0,

      'menu-item-position' => 1,

      'menu-item-type' => 'custom',

      'menu-item-title' => 'Appareils auditifs' ,

      'menu-item-url' => $cat1_link,

      'menu-item-description' => '',

      'menu-item-attr-title' => '',

      'menu-item-status' => 'publish'

      );

      wp_update_nav_menu_item( $menu_id, 0, $menu1 );



      }

      }

    • 04/21/11 8:34am

      jevusi says:

      sorry, mistake
      i use this code

      add_action( 'init', 'register_navmenus' );

      function register_navmenus() {

      global $blog_id;

      global $cat1_link;

      if ( is_nav_menu( 'menuonglet'.$number ) && $number != $blog_id )

      {

      wp_delete_nav_menu( 'menuonglet'.$number )

      }



      if ( !is_nav_menu( 'menuonglet'.$blog_id )) {



      $menu_id = wp_create_nav_menu( 'menuonglet'.$blog_id );

      $menu1 = array(

      'menu-item-object-id' => '',

      'menu-item-object' => '',

      'menu-item-parent-id' => 0,

      'menu-item-position' => 1,

      'menu-item-type' => 'custom',

      'menu-item-title' => 'Appareils auditifs' ,

      'menu-item-url' => $cat1_link,

      'menu-item-description' => '',

      'menu-item-attr-title' => '',

      'menu-item-status' => 'publish'

      );

      wp_update_nav_menu_item( $menu_id, 0, $menu1 );



      }

      }

    • 04/21/11 8:37am

      Peter Michael says:

      $number is not assigned a value, so $number is NULL

      You should add maybe


      global $blog_id, $cat1_link;
      $number = 1;
      ...

    • 04/21/11 8:39am

      Peter Michael says:

      Change $number value accordingly:


      add_action( 'init', 'register_navmenus' );
      function register_navmenus()
      {
      global $blog_id, $cat1_link;
      $number = 1;

      if ( is_nav_menu( 'menuonglet'.$number ) && $number != $blog_id )
      {
      wp_delete_nav_menu( 'menuonglet'.$number )
      }

      if ( !is_nav_menu( 'menuonglet'.$blog_id ))
      {

      $menu_id = wp_create_nav_menu( 'menuonglet'.$blog_id );
      $menu1 = array
      (
      'menu-item-object-id' => '',
      'menu-item-object' => '',
      'menu-item-parent-id' => 0,
      'menu-item-position' => 1,
      'menu-item-type' => 'custom',
      'menu-item-title' => 'Appareils auditifs' ,
      'menu-item-url' => $cat1_link,
      'menu-item-description' => '',
      'menu-item-attr-title' => '',
      'menu-item-status' => 'publish'
      );
      wp_update_nav_menu_item( $menu_id, 0, $menu1 );
      }
      }

    • 04/21/11 8:39am

      jevusi says:

      if i use $number = 1

      if ( is_nav_menu( 'menuonglet'.$number ) && $number != $blog_id )

      means
      if ( is_nav_menu( 'menuonglet1' ) && 1 != $blog_id )

      No ?
      but if the menu is menuonglet44 ?

    • 04/21/11 8:40am

      Peter Michael says:

      Fixed, missing ;


      add_action( 'init', 'register_navmenus' );
      function register_navmenus()
      {
      global $blog_id, $cat1_link;
      $number = 1;

      if ( is_nav_menu( 'menuonglet'.$number ) && $number != $blog_id )
      {
      wp_delete_nav_menu( 'menuonglet'.$number );
      }

      if ( !is_nav_menu( 'menuonglet'.$blog_id ))
      {

      $menu_id = wp_create_nav_menu( 'menuonglet'.$blog_id );
      $menu1 = array
      (
      'menu-item-object-id' => '',
      'menu-item-object' => '',
      'menu-item-parent-id' => 0,
      'menu-item-position' => 1,
      'menu-item-type' => 'custom',
      'menu-item-title' => 'Appareils auditifs' ,
      'menu-item-url' => $cat1_link,
      'menu-item-description' => '',
      'menu-item-attr-title' => '',
      'menu-item-status' => 'publish'
      );
      wp_update_nav_menu_item( $menu_id, 0, $menu1 );
      }
      }

    • 04/21/11 8:57am

      jevusi says:

      that doesn't work.

      It's normal, no ? If number = 1 and the menu is menuonglet44... non ?

    • 04/21/11 9:01am

      Peter Michael says:

      Set $number to 44 and it will delete the menu except if the blog_id is 44 too.

      So, maybe there was a misunderstanding, let me try to rephrase your question:

      "delete all custom menus with a name pattern like 'menuonglet'.$anynumber except if $anynumber == $blog_id"

      Is this correct?

    • 04/21/11 9:17am

      jevusi says:

      yes : if the menu is menuonglet125 i want remove it, except if 125 is the blog_id

      In attchment an image with your function

      Attached Image

    • 04/21/11 9:23am

      Peter Michael says:

      This works:


      add_action( 'init', 'register_navmenus' );
      function register_navmenus()
      {
      global $blog_id, $cat1_link;

      $allmenus = wp_get_nav_menus();
      if($allmenus)
      {
      foreach($allmenus as $menu)
      {
      $needle = 'menuonglet';
      $needle_length = strlen($needle);
      if(strstr($menu->name, $needle) !== false)
      {
      $menu_id = substr($menu->name, $needle_length);
      $menu_id = (int)$menu_id;
      if($menu_id != $blog_id)
      {
      wp_delete_nav_menu($menu->name);
      }
      }
      }
      }

      if ( !is_nav_menu( 'menuonglet'.$blog_id ))
      {
      $menu_id = wp_create_nav_menu( 'menuonglet'.$blog_id );
      $menu1 = array
      (
      'menu-item-object-id' => '',
      'menu-item-object' => '',
      'menu-item-parent-id' => 0,
      'menu-item-position' => 1,
      'menu-item-type' => 'custom',
      'menu-item-title' => 'Appareils auditifs',
      'menu-item-url' => $cat1_link,
      'menu-item-description' => '',
      'menu-item-attr-title' => '',
      'menu-item-status' => 'publish'
      );
      wp_update_nav_menu_item( $menu_id, 0, $menu1 );
      }
      }


      Raise price money a little ;-)

    • 04/21/11 9:23am

      jevusi says:

      i ty this:


      i use this function

      	$number = 999;



      if ( is_nav_menu( 'menuonglet'.$number ) && $number != $blog_id )

      {

      wp_delete_nav_menu( 'menuonglet'.$number );

      }


      i create a menu menuonglet999
      i refresh the page, and the menu menuonglet999 is removed (nice!)

      So

      could i not use a code like this ? :

      if ((preg_match ('^[0-9]+$' , $number))
      AND ($number != $blog_id)
      AND is_nav_menu( 'menuonglet'.$number )) {wp_delete_nav_menu('menuonglet'.$number);}

    • 04/21/11 9:45am

      Peter Michael says:

      Did you see my answer from 9:23am ?

    • 04/21/11 10:13am

      jevusi says:

      no i didn't ^^ :-)

      but i try this immediatly

    • 04/21/11 10:20am

      jevusi says:

      it seems that works !! :-)

    • 04/23/11 1:00am

      Peter Michael says:

      Does it work? If yes please close the question.

  • avatar
    Last edited:
    04/21/11
    6:56am
    AdamGold says:

    Fix for Peter's code:

    if ( is_nav_menu( 'menuonglet' . $number ) && $number != $blog_id )
    {
    wp_delete_nav_menu( 'menuonglet' . $number );
    }

    • 04/21/11 7:37am

      jevusi says:

      i had try, that didn't work.

    • 04/21/11 7:40am

      AdamGold says:

      It should be:

      if( is_nav_menu( 'menuonglet' . $number ) && $number != $blog_id ) {
      do_action('wp_delete_nav_menu', 'menuonglet' . $number );
      }


      make sure you defined $number.

    • 04/21/11 8:31am

      jevusi says:

      that doesn't work :-/

      make sure you defined $number.

      what does it mean ?

    • 04/21/11 8:38am

      jevusi says:

      must i declare the variable $number before ?
      But how ?

      $number can be all numbers except $blog_id...

    • 04/21/11 9:23am

      jevusi says:

      could you look at my response to Peter please ?
      Thanks

    • 04/21/11 11:33am

      AdamGold says:

      Like this:

      $number = 3;
      if( is_nav_menu( 'menuonglet' . $number ) && $number != $blog_id ) {
      do_action('wp_delete_nav_menu', 'menuonglet' . $number );
      }


      change 3 to your desired number.

  • avatar
    Last edited:
    04/22/11
    5:57am
    Christianto says:

    Why you want to do it??

    If you want to register different menu to each site, the your original function is enough, since each time php parse your original function, it will register nav with different id, the ID refer to global $blog_id or $current_blog->blog_id and it change depending which content/site is being show, there will be no duplication isn't it??

    But if you want to register specific menu with different param for specific site/blog. Then the ID of that site/blog should be declared in variable $MainBlogMenu for example and check the variable against currently show site/blog ID...

    edit: sorry, you want to update registered menu ^_^ not register it.. ignore my comment..

    Previous versions of this answer: 04/22/11 at 5:57am

This question has expired.



jevusi voted on this question.



Current status of this question: Completed



Warning: Please do not give out any FTP or ssh credentials to anyone, unless you trust them completely. Giving out login details is dangerous.

If the asker does not get an answer then they have 10 days to request a refund.