Todo lo que intento hacer es agregar dinámicamente la última publicación a mi menú de navegación.
Eso es todo.
Quiero hacer esto mediante programación porque no quiero depender de terceros ni de complementos en el funcionamiento de mi sitio más allá de lo mínimo necesario para tener un sitio autohospedado en WordPress.
Estoy usando un tema básico personalizado que he usado en otros lugares durante unos 20 años. Modifiqué mi HTML/CSS según fue necesario para que funcionara en el ecosistema de WordPress. Por lo demás, mi sitio funciona perfectamente y se ve exactamente como quiero que se vea.
El menú actual en mi sitio público es HTML/CSS 100% estático. Ingresé manualmente los ~300 enlaces a las publicaciones del blog en el menú, todo porque WordPress no tiene un menú nativo funcional integrado.
DONDE ESTOY:
-He registrado exitosamente mi menú personalizado.
-Tengo un código en mi archivo funciones.php que de hecho puede insertar dinámicamente el título de la última publicación y la URL en el menú.
EL PROBLEMA:
-Todo el código que puedo encontrar sobrescribe el elemento de menú más reciente existente.
De hecho, tengo un par de códigos muy diferentes que logran generar la última publicación en el “theme_location” de mi “wp_nav_menu”, pero todos sobrescriben la entrada anterior/existente.
Debo faltar alguna línea mágica de código PHP que hace que en realidad se agregue al código existente en lugar de sobrescribirlo.
Puedo proporcionar ejemplos de los códigos que estoy usando, pero todo lo que necesito es alguien que sepa PHP que pueda decirme «oye idiota, para agregar los resultados de la matriz, usa el argumento ‘»‘soilent_green'».
Todo lo que quiero es agregar dinámicamente la última entrada al menú. Debe ser de conocimiento común para cualquier asistente de PHP.
He pasado dos días completos de 8 horas sudando experimentando/buscando en Google/rompiendo cosas sin éxito. Lo que estoy intentando hacer no sólo debería ser fácil pero debería ser una configuración incorporada y activada por defecto. Los usuarios ni siquiera deberían tener que pensar en esto porque debería estar activado de forma predeterminada, como funciona cualquier otra plataforma de blogs que haya visto. Increíblemente, enloquecedoramente, WordPress TIENE esta funcionalidad incorporada… para PÁGINAS. Pero WordPress es fundamentalmente una plataforma de blogs, ¿no es así? Entonces, ¿por qué esta funcionalidad no está disponible para POSTS? No puedo creer cuánto tiempo he perdido tratando de encontrar una respuesta a este problema tan básico.
Aquí hay un ejemplo de mi archivo funciones.php con uno de los varios códigos que encontré que SÍ agregan dinámicamente la última publicación al menú, pero que sobrescriben los elementos del menú existentes. No quiero que se sobrescriban, quiero que se agreguen al menú. Como la función básica de cualquier menú de navegación de blog en cualquier lugar. Podría decirse que es la funcionalidad más básica.
add_theme_support('menus');register_nav_menus(
array('sidebar-menu' => 'sidebar Menu Location',
)
);
// Front end only, to avoid issues in the admin menu editor
if ( ! is_admin() ) {
add_filter( 'wp_get_nav_menu_items', 'replace_placeholder_nav_menu_item_with_latest_post', 10, 3 );
}
/**
* Replaces a custom URL placeholder with the URL to the latest post.
*
* @param array $items The menu items.
* @param object $menu The menu object.
* @param object $args The menu arguments.
* @return array The modified menu items.
*/
function replace_placeholder_nav_menu_item_with_latest_post( $items, $menu, $args ) {
foreach ( $items as $item ) {
if ( '#latestpost' != $item->url ) {
continue;
}
$latest_post = get_posts( array(
'numberposts' => 1,
'post_status' => 'publish'
) );
if ( empty( $latest_post ) ) {
continue;
}
$appended_html = sprintf(
'
'. esc_html( get_the_title() ) .' ',
get_permalink()
);echo $appended_html;
}
return $items;
}
La página con la que necesito ayuda: [log in to see the link]