web-dev-qa-db-fra.com

Ajouter automatiquement des catégories et des auteurs dans un menu personnalisé?

J'ai passé quelques jours à parcourir les lieux à la recherche d'un moyen d'ajouter automatiquement des catégories et des auteurs à mon menu personnalisé dès leur création (de la même manière que les pages sont automatiquement ajoutées!), Mais jusqu'à présent, pas de chance!

J'aimerais vraiment que mon client n'ait pas à aller au menu et à ajouter manuellement la catégorie ou l'auteur au menu à chaque fois qu'une nouvelle est créée.

Des idées?

1
Eric Mitjans

Vous pouvez utiliser le crochet de filtre wp_get_nav_menu_items pour ajouter de nouveaux éléments dans le WP Nav Menu. L'exemple suivant consiste à ajouter les derniers messages dans le menu de navigation.

Vous pouvez ajouter à ce filtre votre fonction personnalisée, par exemple, ajouter chaque article d'auteur avec un identifiant spécifique. La logique pour ajouter les publications se trouve dans votre fonction personnalisée, comme dans l'exemple suivant de replace_placeholder_nav_menu_item_with_latest_post.

// Front end only, don't hack on the settings page
if ( ! is_admin() ) {
    // Hook in early to modify the menu
    // This is before the CSS "selected" classes are calculated
    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
function replace_placeholder_nav_menu_item_with_latest_post( $items, $menu, $args ) {

    // Loop through the menu items looking for placeholder(s)
    foreach ( $items as $item ) {

        // Is this the placeholder we're looking for?
        if ( '#latestpost' != $item->url )
            continue;

        // Get the latest post
        $latestpost = get_posts( array(
            'numberposts' => 1,
        ) );

        if ( empty( $latestpost ) )
            continue;

        // Replace the placeholder with the real URL
        $item->url = get_permalink( $latestpost[0]->ID );
    }

    // Return the modified (or maybe unmodified) menu items array
    return $items;
}

L'exemple de source provient de Viper007Bond, voir l'article pour plus d'informations sur le code.

1
bueltge