WordPress: me deshice de la segunda página de "inicio", pero no es lo suficientemente bueno

StackOverflow https://stackoverflow.com/questions/219870

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo un sitio de WordPress (2.6.2) en el que he establecido la página de inicio en una página estática en lugar de la página de publicaciones normales. El ID de esta página es 2, por lo que en la plantilla de WordPress he cambiado el wp_list_pages para tener este aspecto:

<?php wp_list_pages('exclude=2&title_li=&depth=1' ); ?>

esto funciona bien, pero ahora la página de inicio no se ilumina " ilumina " cuando se selecciona (porque en realidad es page_id 2 que está seleccionado, y no se muestra en el menú). ¿Hay alguna forma fácil de evitar esto?

Si no es así, en líneas generales, ¿cuál es la forma más difícil de evitar esto? Crear mi propia versión de la función wp_list_pages ?

¡Gracias!

¿Fue útil?

Solución

La configuración de una página estática como la primera página no resalta el enlace del menú, que es el núcleo de la pregunta.

Por lo tanto, podría personalizar (hackear) la función wp_list_pages del lado del servidor, pero aquí hay una opción del lado del cliente si así lo desea:

Utilice la biblioteca jQuery (convenientemente viene con WP 2.2+), llame:

wp_enqueue_script('jquery');

o carga tu propia versión:

wp_enqueue_script( 'jquery', '/path/to/your/jquery.js', false, '1.2.1');

Ahora agregue un poco de javascript en su plantilla, algo como:

if(window.location.href == 'http://www.example.com/'){ //checks for root path - "home" ('http://www.example.com/?p=7' or 'http://www.example.com/2008-10/7' will not match)
    jQuery('#nav > ul > li > a:first').addClass('current_page_item');
}

La parte a: first asume que el primer enlace de su menú es el enlace de inicio / portada. Si no lo está, seleccione a través de href valor o posición. Aquí está por posición:

~~~~~~~~~~~~~~~

jQuery(jQuery('#nav > ul > li > a')[3]).addClass('current_page_item'); //add 'current_page_item' css class so menu item highlighting occurs

Ejemplo:

  

< div id = " nav " >

     

< ul >
   < li > < a > Enlace 0 < / a > < / li >
   < li > < a > Enlace 1 < / a > < / li >
   < li > < a > Link 2 < / a > < / li >
   < li > < a > Link 3 < / a > < / li >
   < li > < a > Enlace 4 < / a > < / li >
   < li > < a > Link 5 < / a > < / li >
   < / ul >

     

< / div >


Advertencias:

  1. Verifique el nombre real de su ID de div de menú ( #nav se muestra aquí)
  2. Una estructura de menú ul / li anidada (por lo que más de un nivel) requerirá un código adicional para seleccionar correctamente el elemento a correcto.
  3. Si los enlaces del menú van a cambiar, no use una técnica de selección de posición, use otro enlace, como el valor href del enlace a la página de inicio / inicio.
  4. El if (window.location.href == ' http://www.example.com/ ') es posible que la parte tenga que ser una expresión regular si hay más variación (https, subdominios múltiples, etc.).

Otros consejos

Puede establecer una página estática como la página principal en Administración > Configuraciones > Panel de lectura después de iniciar sesión como administrador.

La entrada manual de Wordpress sobre este tema se puede encontrar aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top