• ResueltoModerador almendron

    (@almendron)


    Error ocasional, pero que me gustaría corregir.

    [26-Jan-2026 08:47:50 UTC] PHP Fatal error:  Uncaught ArgumentCountError: 7 arguments are required, 4 given in .../tribuna/wp-includes/nav-menu-template.php:290
    Stack trace:
    #0 .../tribuna/wp-includes/nav-menu-template.php(290): sprintf('<div class="wra...', 'menu-primary-it...', 'menu-items', '<li id="menu-it...')
    #1 .../tribuna/wp-content/themes/stargazer/menu/primary.php(9): wp_nav_menu(Object(stdClass))
    #2 .../tribuna/wp-content/themes/stargazer/library/inc/template.php(46): include('/furanet/sites/...')
    #3 .../tribuna/wp-content/themes/stargazer/library/inc/template.php(61): hybrid_get_template_part('menu', 'primary')
    #4 .../tribuna/wp-content/themes/stargazer/header.php(23): hybrid_get_menu('primary')
    #5 .../tribuna/wp-includes/template.php(814): require_once('/furanet/sites/...')
    #6 .../tribuna/wp-includes/template.php(749): load_template('/furanet/sites/...', true, Array)
    #7 .../tribuna/wp-includes/general-template.php(48): locate_template(Array, true, true, Array)
    #8 .../tribuna/wp-content/plugins/advanced-search/includes/views/stargazer/search.php(12): get_header()
    #9 .../tribuna/wp-includes/template-loader.php(125): include('/furanet/sites/...')
    #10 .../tribuna/wp-blog-header.php(19): require_once('/furanet/sites/...')
    #11 .../tribuna/index.php(17): require('/furanet/sites/...')
    #12 {main}
    thrown in .../tribuna/wp-includes/nav-menu-template.php on line 290

    Y este es el código del archivo «primary.php» del tema:

    <nav <?php hybrid_attr( 'menu', 'primary' ); ?>>
    
        <h3 id="menu-primary-title" class="menu-toggle">
            <button class="screen-reader-text"><?php echo hybrid_get_menu_name( 'primary' ); ?></button>
        </h3><!-- .menu-toggle -->
    
        <?php wp_nav_menu(
            array(
                'theme_location'  => 'primary',
                'container'       => '',
                'menu_id'         => 'menu-primary-items',
                'menu_class'      => 'menu-items',
                'fallback_cb'     => '',
                'items_wrap'      => '<div class="wrap"><ul id="%s" class="%s">%s</ul>' . get_search_form( false ) . '</div>'
            )
        ); ?>
    
    </nav><!-- #menu-primary -->

    La línea 9 es <?php wp_nav_menu(

    La función hybrid_get_menu_name es la siguiente:

    function hybrid_get_menu_name( $location ) {

    $locations = get_nav_menu_locations();

    $menu = isset( $locations[ $location ] ) ? wp_get_nav_menu_object( $locations[ $location ] ) : '';

    return $menu ? $menu->name : '';
    }

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Moderador Sergio

    (@kallookoo)

    Posible problema del Core… Se esta investigando (a la espera de reproducirse de nuevo)

    El problema se debe a una incompatibilidad entre las versiones modernas de WordPress y la forma en que tu tema (Stargazer) añade el buscador dentro del menú en el archivo primary.php.

    Al concatenar get_search_form(false) dentro del parámetro items_wrap, si el HTML de tu buscador (o del plugin Advanced Search) incluye algún carácter especial o símbolo de porcentaje, la función sprintf() de WordPress se confunde esperando más argumentos de los que recibe y lanza el error crítico.

    La solución es separar el buscador de la estructura interna del menú por ello lo que podrias hacer es editar el bloque de código de tu archivo primary.php por este:

    PHP

    <nav <?php hybrid_attr( 'menu', 'primary' ); ?>>
        <h3 id="menu-primary-title" class="menu-toggle">
            <button class="screen-reader-text"><?php echo hybrid_get_menu_name( 'primary' ); ?></button>
        </h3>
    
        <div class="wrap">
            <?php wp_nav_menu(
                array(
                    'theme_location'  => 'primary',
                    'container'       => '',
                    'menu_id'         => 'menu-primary-items',
                    'menu_class'      => 'menu-items',
                    'fallback_cb'     => '',
                    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>'
                )
            ); ?>
            <?php echo get_search_form( false ); ?>
        </div>
    </nav>
    

    Al sacar el div .wrap y el get_search_form() fuera del array del menú, el diseño visual se mantendrá exactamente igual pero el código dejará de romperse

    Moderador Sergio

    (@kallookoo)

    Buen punto @jhilrsc01. 😉

    Cambialo @almendron y ya nos dirás

    Moderador almendron

    (@almendron)

    Muchas gracias @jhilrsc01

    Implemento el cambio en cuanto tenga un rato. Dado que el error se producía muy pocas veces, no voy a esperar y lo marco ya como solucionado porque creo que has acertado con la solución.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)

Debes estar registrado para responder a este debate.