fauzanjeg

JNews || Add New or Filter the Menu on My Account element

Mar 29th, 2026
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.58 KB | None | 0 0
  1. if ( ! function_exists( 'jnews_filter_my_account_menu' ) ) {
  2.     /**
  3.      * Add New or Filter the Menu on My Account element
  4.      *
  5.      * @param mixed $dropdown
  6.      * @return array
  7.      */
  8.     function jnews_filter_my_account_menu( $dropdown ) {
  9.         /**
  10.          * Please add the new menu in this variable
  11.          */
  12.         $new_items = array(
  13.             'custom-menu' => array(
  14.                 'after' => 'order',
  15.                 'item'  => array(
  16.                     'text' => esc_html__( 'Custom Menu', 'jnews-child' ),
  17.                     'url'  => esc_url( 'https://www.jegtheme.com/' ),
  18.                 ),
  19.             ),
  20.             // Example additional item:
  21.             'another-menu' => array(
  22.                 // 'after' => 'edit-account',
  23.                 'item'  => array(
  24.                     'text' => esc_html__( 'Another', 'jnews-child' ),
  25.                     'url'  => esc_url( 'https://example.com/' ),
  26.                 ),
  27.             ),
  28.         );
  29.  
  30.         $result = array();
  31.         $inserted_keys = array();
  32.  
  33.         foreach ( $dropdown as $key => $value ) {
  34.             $result[ $key ] = $value;
  35.  
  36.             // Check for any new items that should be inserted after this key
  37.             foreach ( $new_items as $new_key => $spec ) {
  38.                 if ( isset( $spec['after'] ) && $spec['after'] === $key && ! in_array( $new_key, $inserted_keys, true ) ) {
  39.                     $result[ $new_key ] = $spec['item'];
  40.                     $inserted_keys[] = $new_key;
  41.                 }
  42.             }
  43.         }
  44.  
  45.         // Append any new items that weren't inserted (fallback)
  46.         foreach ( $new_items as $new_key => $spec ) {
  47.             if ( ! in_array( $new_key, $inserted_keys, true ) ) {
  48.                 $result[ $new_key ] = $spec['item'];
  49.             }
  50.         }
  51.  
  52.         return $result;
  53.     }
  54.     add_filter( 'jnews_dropdown_link', 'jnews_filter_my_account_menu', 99 );
  55. }
Advertisement
Add Comment
Please, Sign In to add comment