C√≥mo agregar elementos personalizados a men√ļs espec√≠ficos de WordPress

Los men√ļs de WordPress son asombrosos. La interfaz de arrastrar y soltar hace que sea realmente f√°cil para los desarrolladores de temas de WordPress y los usuarios por igual. En el pasado, le mostramos c√≥mo agregar un men√ļ personalizado en WordPress junto con c√≥mo dise√Īar un men√ļ personalizado. Una cosa que est√° limitada en la interfaz visual de los men√ļs es que solo puede agregar enlaces (p√°ginas, categor√≠as o enlaces personalizados). ¬ŅQu√© sucede si desea agregar un elemento personalizado a sus men√ļs de WordPress? Tal vez desee agregar una barra de b√ļsqueda o un enlace para iniciar / cerrar sesi√≥n, la fecha de hoy o cualquier otra cosa en un men√ļ de WordPress. El hecho de que no haya una interfaz visual no significa que no sea posible. En este art√≠culo, le mostraremos c√≥mo puede utilizar el wp_nav_menu_items enganche para agregar elementos personalizados a todos o men√ļs espec√≠ficos de WordPress.

Nota: este tutorial está destinado a los desarrolladores de temas de WordPress, por lo que se espera que conozca html / css básico y una comprensión justa de cómo funcionan los temas de WordPress.

Obviamente, debe tener un men√ļ personalizado habilitado en sus temas antes de poder continuar.

Empecemos con lo básico. Necesitamos agregar nuestro propio filtro en wp_nav_menu_items gancho. Un ejemplo se vería así:

add_filter( 'wp_nav_menu_items', 'your_custom_menu_item', 10, 2 );
function your_custom_menu_item ( $items, $args ) {
    if (is_single() && $args->theme_location == 'primary') {
        $items .= '
  • Show whatever
  • '; } return $items; }

    Ahora, como puede ver, puede usar las declaraciones condicionales junto con el argumento tema_ubicaci√≥n. Esto le permite orientar una ubicaci√≥n de men√ļ espec√≠fica con cualquier condici√≥n que desee. Si no desea la declaraci√≥n condicional, no tiene que usarla. Simplemente agr√©guelo a una ubicaci√≥n de men√ļ espec√≠fica o viceversa.

    Ahora que ha visto un ejemplo básico, permítanos mostrarle algunos ejemplos específicos de cómo funcionaría.

    Agregar enlaces de inicio / cierre de sesi√≥n a un men√ļ espec√≠fico de WordPress

    Si desea dar a sus usuarios la capacidad de iniciar / cerrar sesi√≥n, entonces un lugar donde puede agregar los enlaces es en su men√ļ personalizado. El fragmento a continuaci√≥n mostrar√° enlaces de inicio / cierre de sesi√≥n a sus usuarios adecuadamente en la ubicaci√≥n del men√ļ: principal. Puede cambiar la ubicaci√≥n del men√ļ si lo desea.

    add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
    function add_loginout_link( $items, $args ) {
        if (is_user_logged_in() && $args->theme_location == 'primary') {
            $items .= '
  • Log Out
  • '; } elseif (!is_user_logged_in() && $args->theme_location == 'primary') { $items .= '
  • Log In
  • '; } return $items; }

    Agregar una barra de b√ļsqueda a un men√ļ espec√≠fico

    ¬ŅDesea agregar una barra de b√ļsqueda a un men√ļ espec√≠fico? Pues no busques m√°s. Puede hacerlo pegando el siguiente fragmento:

    add_filter('wp_nav_menu_items','add_search_box_to_menu', 10, 2);
    function add_search_box_to_menu( $items, $args ) {
        if( $args->theme_location == 'primary' )
            return $items."";
    
        return $items;
    }

    Agregar la fecha de hoy a un men√ļ espec√≠fico de WordPress

    El fragmento a continuaci√≥n agregar√° la fecha de hoy a su men√ļ de WordPress. Puede utilizar nuestro manual de Fecha de hoy para modificar el c√≥digo si lo desea.

    add_filter('wp_nav_menu_items','add_todaysdate_in_menu', 10, 2);
    function add_todaysdate_in_menu( $items, $args ) {
        if( $args->theme_location == 'primary')  {
    		
    		$todaysdate = date('l jS F Y');
            $items .=  '
  • ' . $todaysdate . '
  • '; } return $items; }

    Esperamos que este artículo permita a los desarrolladores ampliar la funcionalidad de sus temas.