WordPress, mettre un avertissement sur vos billets pour adultes

Non webinventif ne va pas devenir un blog de fesses ! (Je sens qu'il y a des déçus là) 😉
Mais en regardant un peu les mots clés qui mènent à ce blog, je me rend compte qu'il y a une question qui revient régulièrement, à savoir "Comment mettre un avertissement sur une catégorie de billets ?"

Je vais donc y répondre en vous montrant les différentes possibilités pour un blog tournant sous WordPress. Bien évidement, là je pars du principe que l'avertissement est pour une catégorie "adulte", mais vous pourriez tout aussi bien vous en servir pour autre chose 😉

Alors pour l'avertissement, j'ai choisi une simple boite de confirmation en javascript avec un bouton pour confirmer ou pour annuler. Vous pouvez bien évidement adapter ça par tout autre fonction javascript, comme par exemple cet excelent plugin pour jQuery !

Script

Placez le script suivant dans le fichier "functions.php" de votre thème (si pas, créez le) ou alors carrément dans un nouveau plugin.

########################################################
#      Alerte pour billets adultes
########################################################
function censored_post(){
        global $wp_query;
        $goquery = $wp_query->post;
        if ( (in_category(16) || get_post_meta($goquery->ID, 'xxx', true) || preg_match("|sexy|", $goquery->post_title)) && is_single() ) {
?>
                <!-- Inclusion auto -->
                <script  type="text/javascript">
                <!--
                if (!confirm("Ceci est une section pour adultes !nVoulez-vous y acceder ?")) {
                        window.location.href = "<?php bloginfo('url'); ?>";
                }
                -->
                </script>
                <!-- /Inclusion auto -->
<?php
        }
}
add_action('wp_head', 'censored_post');

Explications

Ce script va injecter le code javascript dans le header de votre blog selon plusieurs conditions.

  1. Il faut que le billet soit dans la catégorie "16" (in_category(16)) (à changer par l'ID de votre catégorie Adulte) -> voir la capture
  2. Ou alors que le billet comporte un champs personnalisé nommé "xxx" (get_post_meta($goquery->ID, 'xxx', true)) -> voir la capture
  3. Ou alors que le billet comporte le terme "sexy" dans son titre (preg_match("|sexy|", $goquery->post_title)) -> voir la capture
  4. Et enfin, il faut impérativement que la page affichée soit du type billet (is_single())

Voilà, donc si vous appuyez sur ok, la page s'affiche, et sinon vous êtes redirigez vers la page d'accueil du blog !

Plus loin

Pour ceux qui préfère mettre le javascript en fin de page plutôt que dans le header, c'est déconseillé dans ce cas précis ! Sinon l'avertissement ne s'afficherait qu'une fois la page chargée (donc visible) ce qui n'as aucun sens !

Depuis la version 2.6 de wordpress, il est aussi possible d'identifier les tags du billet courant grâce à la fonction has_tag('montag'). En partant de ce principe, on pourrait aussi ajouter cette condition pour l'affichage de l'avertissement. Mais cette fonction n'est (pour l'instant) utilisable que dans la boucle (loop), donc pour la rendre fonctionnelle, il faut injecter notre javascript non pas dans le header, mais directement dans le billet. Du coup je préconise d'appeler la fonction d'injection manuellement directement après le début de la boucle:

La nouvelle fonction avec prise en charge du tag "sexy":

########################################################
#      Alerte pour billets adultes
########################################################
function censored_post(){
        global $wp_query;
        $goquery = $wp_query->post;
        if ( (in_category(16) || get_post_meta($goquery->ID, 'xxx', true) || has_tag('sexy') || preg_match("|sexy|", $goquery->post_title)) && is_single() ) {
?>
                <!-- Inclusion auto -->
                <script  type="text/javascript">
                <!--
                if (!confirm("Ceci est une section pour adultes !nVoulez-vous y acceder ?")) {
                        window.location.href = "<?php bloginfo('url'); ?>";
                }
                -->
                </script>
                <!-- /Inclusion auto -->
<?php
        }
}

Ensuite dans votre fichier single.php. Après ceci:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

Ajoutez ceci:

<?php censored_post(); ?>

Mais la 1ère solution reste la plus propre et efficace !

Conclusions

Le cul, c'est bien !

-----

Articles relatifs

  • Une modal box de chez jQuery aurait fait l’affaire (avec une opacité faible pour ne pas divulguer le contenu).
    Bonne initiative en tout cas de créer un article pour répondre à la demande 😉

  • k-ny

    Tout à fait Sylvain, c’est d’ailleurs pour ça que j’ai mis un lien vers un plugin jquery dans mon article. Là je voulais juste expliquer les bases, après il suffit de remplacer le « confirm » par la fonction javascript voulue 🙂

  • Pingback: Les billets de la semaine #9 | Le blog de Yohann CIURLIK | Spawnrider.Net :: Blog()

  • Génial, ça faisait un moment que je cherchait un moyen simple et efficace de mettre ce type d’avertissement en place, thanxxx! 🙂

  • k-ny

    @Stagueve, de rien mon cochon 😉

  • Le messie ! J’ai cherché vainement une astuce de ce genre pendant des semaines sans rien trouver.

    Un petit clic scoopeo pour te remercier ;).

  • clement

    Merci, super… depuis le temps que je cherchais ce script, MERCI

  • Gros

    Clap Clap

    Je te mets 10/10 parce que j’apprécie la forme et le fond. Partager dans le petit monde radin des webmasters est pas anodin..
    Merci à toi donc.

  • CANYON

    Juste un petit mot pour les gens interressés , un mod pour wordpress existe pour leurs blogs pour adultes: « splashscreen « .

    Cordialement.

  • Symon

    Trés interessant et cela fonctionne nickel.
    Cependant, comment faire pour ceux qui, comme moi, on des aperçus de photos directement depuis la catégorie avec la possibilité de zoomer dessus en Jquery ?
    Est il possible d’afficher ce message lorsque l’on accede à une catégorie bien précise ?