27818 sujets

CSS et mise en forme, CSS3

Modérateur
Bonjour,

Avec un peu de chance, lorsque tu édites ton article dans wordpress, tu devrais avoir une case qui te permettra d'activer/désactiver les notifications pour cet article seulement.

Mais bon, ça dépend sans doute de l'éditeur d'article que tu utilises.

Voir https://wpmarmite.com/onesignal-wordpress/ au chapitre 3. Comment envoyer une notification push ?

Amicalement,
Modifié par parsimonhi (25 Nov 2020 - 12:52)
Merci pour la réponse,

J'ai du mal m'exprimer. Oui j'arrive a désactiver l'envoie d'une notification sur une page ou un article à sa publication.

Mais je voudrait désactivé la fenêtre Pop Up d'abonnement aux notification sur cette page.

Merci
Modérateur
Bonjour,

Je n'ai pas trouvé d'option permettant de faire en sorte que le popup demandant à l'utilisateur d'autoriser les notifications n'apparaissent que sur certaines pages. Ça a l'air d'être pour tout le site ou rien (ou alors on rentre dans le très très compliqué).

Du côté du css, je ne suis pas sûr à 100%, mais on ne semble pas avoir la main non plus.

Du coup, il ne reste plus qu'à tenter de modifier le plugin comme ci-dessous, ce que la morale réprouve, mais bon, on fait comme on peut.

1) aller dans le répertoire "wp-content/plugins/onesignal-free-web-push-notifications/"
2) rechercher le fichier "onesignal-public.php", et en faire une copie nommée par exemple "onesignal-public-original.php"
3) ouvrir le fichier "onesignal-public.php" avec un éditeur de texte
4) remplacer la ligne
echo "oneSignal_options['welcomeNotification'] = { };\n";

par les lignes
echo "if(window.location.pathname.match(/studio\/faire-sonner-tes-productions/))\n";
echo "\toneSignal_options['welcomeNotification'] = { disable: true };\n";
echo "else oneSignal_options['welcomeNotification'] = { };\n";

5) enregistrer les modifications
6) allumer un cierge et tester

Si ça marche, déboucher une bouteille parce qu'on aura eu un gros coup de bol.

Si ça marche pas, mettre le fichier "onesignal-public.php" à la poubelle et renommer "onesignal-public-original.php" en "onesignal-public.php".

Note : il y a sans doute des manières moins intrusives de faire cette modification, mais déjà il faudrait voir si le principe marche.

Amicalement
Modifié par parsimonhi (25 Nov 2020 - 21:46)
Merci infiniment,
C'est vraiment gentil, parce que ce n'est plus vraiment dans mes compétences.
mais j'aime apprendre.
J'essaie tout ça demain et je réécris ici et j'en ouvre une si ça marche.

Oui il n'y a pas d'option pour enlever sur une page sur le plug in, c'est dommage.

J'ai aussi trouvé ça sur la doc du plug in.
https://documentation.onesignal.com/docs/web-push-wordpress-faq#onesignal_initialize_sdk-filter

Mais je 'ai pas vraiment compris comme mettre en place.
J'ai essayé des choses qui n'ont pas marché...
Modérateur
Bonjour,

Voici une solution plus académique (qui désactive complètement le plugin pour la page contenant dans son url "studio/faire-sonner-tes-productions"). J'aurais dû penser à ça d'abord.

1) dans le dossier "wp-content", créer un dossier "mu-plugins" s'il n'existe pas déjà.
2) dans ce dossier, créer un fichier appelé par exemple "desactivate-one-signal.php" contenant le code suivant :
<?php
if( !is_admin() && empty( $_POST ) ){
$uri = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$uriArr = explode( '?',$uri );
$uri = $uriArr[0];
if( preg_match("#studio/faire-sonner-tes-productions#",$uri) ){
    $paths = array(
        'onesignal-free-web-push-notifications/onesignal.php'
    );
    global $paths;
    add_filter( 'option_active_plugins', 'my_option_active_plugins' );      
} }


function my_option_active_plugins( $plugins ){
global $paths;  
foreach( $paths as $path ){
    $k = array_search( $path, $plugins );
    if( false !== $k ){
        unset( $plugins[$k] );
    }
}
return $plugins;
}
?>

L'avantage de cette solution est qu'elle continuera de fonctionner même en cas de mise à jour du plugin ou de wordpress.

Amicalement,
Modifié par parsimonhi (25 Nov 2020 - 22:29)
Bonsoir,

C'est parfait ça fonctionne.
Encore merci beaucoup !

Bonne soirée à toi.
Modifié par bibi-piegeareves (26 Nov 2020 - 23:38)
Dernière question et si je veux rajouter une page ou désactiver le plug je fait comment ?
J'ai essayé de modifier le code, mais je bug le site !
Modérateur
Bonjour,
bibi-piegeareves a écrit :
Dernière question et si je veux rajouter une page ou désactiver le plug je fait comment ?
J'ai essayé de modifier le code, mais je bug le site !

Je suppose que tu as utilisé la deuxième solution (celle où on met un script dans le dossier "mu-plugin"). De toute façon, je pense que la première solution ne marche pas (mais je ne peux pas tester ça facilement).

1) pour exclure une deuxième page, par exemple https://www.piegeareves.fr/studio/mixage-audio/, tu remplaces la ligne
if( preg_match("#studio/faire-sonner-tes-productions#",$uri) ){

par ce qui suit (mais il y a plein d'autres possibilités)
if( preg_match("#(studio/faire-sonner-tes-productions)|(studio/mixage-audio)#",$uri) ){

Il suffit de bien faire attention que les chaines que tu mets entre () sont bien des sous-chaines permettant d'identifier de manière unique les pages concernées. En gros, entre les #, tu auras une série de () contenant des morceaux caractéristiques des url des pages pour lesquels tu ne veux pas de demande de consentement, séparées par un |, c'est à dire, un truc du genre :

#(page1)|(page2)|(page3)#

2) pour que ce code ne fasse plus rien, bah, tu peux :

2a) le retirer du dossier mu-plugins,

2b) ou bien tu retires la portion de code suivante
'onesignal-free-web-push-notifications/onesignal.php'

2c) ou bien tu mets en commentaire l'ensemble du code en ajoutant un /* au début et un */ à la fin.

Amicalement,
Ha ben oui c'est parfait,
J'ai essayé avec des , au lieux des | et sans parenthèses. Erreur de syntaxe.
Merci pour toutes les infos !!!