Outils pour utilisateurs

Outils du site


informatique:wordpress:cacher_les_articles_d_une_categorie

Cacher Les Articles D Une Categorie

Date de création : 2024/10/06 22:01

 

Pour cacher les articles d'une certaine catégorie à tous les utilisateurs sauf Les utilisateurs enregistrés et ceux avec le rôle secret.

Corriger le filtrage des articles :

Nous pouvons le faire sans plugin par l'ajout d'un petit code dans votre fichier fonction.php

function masquer_articles_cache( $query ) {
    // Vérifie si on est sur le front-end et que c'est la requête principale
    if ( !is_admin() && $query->is_main_query() ) {
 
        // Si l'utilisateur est connecté
        if ( is_user_logged_in() ) {
            $user = wp_get_current_user();
 
            // Vérifie si l'utilisateur fait partie du rôle "Secret" ou s'il a un rôle supérieur à abonné
            if ( !in_array( 'secret', (array) $user->roles ) && !current_user_can( 'edit_posts' ) ) {
                // Exclure uniquement la catégorie avec l'ID 2 (cache)
                $query->set( 'cat', '-ID_DE_LA_CATEGORIE' );
            }
        } else {
            // Si l'utilisateur n'est pas connecté, exclure la catégorie "Gerbing"
            $query->set( 'cat', '-ID_DE_LA_CATEGORIE' );
        }
    }
}
add_action( 'pre_get_posts', 'masquer_articles_gerbing' );

-ID_DE_LA_CATEGORIE est l'ID de la catégorie avec le signe moins devant.

exemple: -2

Masquer la catégorie “Caché” dans le menu de navigation :

function masquer_categorie_menu_pour_utilisateurs_non_autorises( $items, $args ) {
    if ( is_user_logged_in() ) {
        $user = wp_get_current_user();
 
        // Si l'utilisateur ne fait pas partie du rôle "Secret" et n'a pas un rôle supérieur à abonné
        if ( !in_array( 'secret', (array) $user->roles ) && !current_user_can( 'edit_posts' ) ) {
            foreach ( $items as $key => $item ) {
                if ( $item->object_id == ID_DE_LA_CATEGORIE ) {
                    unset( $items[$key] );
                }
            }
        }
    } else {
        // Si l'utilisateur n'est pas connecté, masquer la catégorie "Secret"
        foreach ( $items as $key => $item ) {
            if ( $item->object_id == ID_DE_LA_CATEGORIE ) {
                unset( $items[$key] );
            }
        }
    }
 
    return $items;
}
 
add_filter( 'wp_get_nav_menu_items', 'masquer_categorie_menu_pour_utilisateurs_non_autorises', 10, 2 );

Cette fois ID_DE_LA_CATEGORIE est juste l'idée de la catégorie, on ne remet pas de signe devant

Donc maintenant nous avons caché les articles et la catégorie mais il peut être aussi judicieux de faire disparaître les articles du site Map.

Code pour exclure une catégorie du sitemap natif de WordPress :

Donc, nous rajoutons encore un petit bout de code.

function exclure_categorie_secret_du_sitemap( $url_list, $post_type ) {
    // Vérifie si nous sommes sur le sitemap des articles
    if ( 'post' === $post_type ) {
        foreach ( $url_list as $key => $url ) {
            // Récupère les ID des articles
            $post_id = url_to_postid( $url['loc'] );
 
            // Vérifie si l'article fait partie de la catégorie "Secret" (ID 2)
            if ( has_category( 2, $post_id ) ) {
                unset( $url_list[$key] ); // Exclut l'article du sitemap
            }
        }
    }
 
    return $url_list;
}
add_filter( 'wp_sitemaps_posts', 'exclure_categorie_secret_du_sitemap', 10, 2 );
if ( has_category( ID_DE_LA_CATEGORIE, $post_id ) ) {

Bien mettre l'ID_DE_LA_CATEGORIE de la catégorie.


Page dans la catégorie:

informatique/wordpress/cacher_les_articles_d_une_categorie.txt · Dernière modification : 2024/10/06 22:12 de john

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki