Lorsque vous créez une campagne dans Charitable, WordPress lui attribue automatiquement sa propre URL publique à l'adresse /campaigns/[campaign-slug]/. Cela se produit parce que Charitable enregistre les campagnes en tant que type de publication personnalisé public, ce qui permet aux moteurs de recherche et aux liens directs d'accéder à la page de la campagne.
Cela fonctionne bien si vous souhaitez que chaque campagne ait sa propre page de destination. Mais si vous ne souhaitez que les donateurs accèdent à votre campagne via une page spécifique de votre site, par exemple une page /donate/ unique où vous avez intégré la campagne avec le shortcode ou le bloc, l'URL créée automatiquement devient un deuxième point d'entrée indésirable.
Cette page couvre deux méthodes pour supprimer ce point d'entrée. Les deux options laissent votre intégration de campagne fonctionner exactement comme avant, car l'intégration lit les données de la campagne directement depuis la base de données. Elle ne dépend pas de l'accessibilité publique de l'URL de la campagne unique.
Quand utiliser ceci
- Vous intégrez votre campagne sur une page de don dédiée et souhaitez que ce soit le seul endroit où les donateurs atterrissent.
- Une URL de campagne s'affiche dans les résultats de recherche ou est partagée, et vous souhaitez envoyer ces visiteurs vers votre page de don à la place.
- Vous ne gérez qu'une seule campagne à la fois et l'URL de campagne unique est redondante.
Pourquoi l'URL existe en premier lieu
Charitable enregistre campaign comme un type de publication personnalisé WordPress avec public => true et publicly_queryable => true. Ces deux indicateurs indiquent à WordPress de générer une URL pour chaque campagne et de la servir via le modèle de publication unique.
Le modèle d'URL est [votre-permalink-front]/campaigns/[campaign-slug]/. Si la structure de permalien de votre WordPress a un préfixe, par exemple /news/%postname%/, l'URL de la campagne devient /news/campaigns/[campaign-slug]/. C'est le comportement standard de WordPress, pas un réglage de Charitable.
Il n'y a pas d'option intégrée dans les paramètres de Charitable pour désactiver l'URL de campagne unique. Les deux extraits ci-dessous sont les méthodes prises en charge pour la désactiver.
Option 1 : Rediriger les URL de campagne uniques vers votre page de don (recommandé)
C'est l'option à choisir s'il y a une chance qu'une URL de campagne ait déjà été partagée, indexée ou liée depuis ailleurs. Les visiteurs qui arrivent sur l'URL de la campagne sont envoyés vers votre page de don avec une redirection 301, que les moteurs de recherche respectent avec le temps.
Ajoutez cet extrait à l'aide d'un plugin d'extraits de code (tel que WPCode) ou du fichier functions.php de votre thème enfant :
add_action( 'template_redirect', function() {
if ( is_singular( 'campaign' ) ) {
wp_safe_redirect( home_url( '/donate/' ), 301 );
exit;
}
} );
Changez /donate/ pour l'URL vers laquelle vous souhaitez envoyer les visiteurs. Après avoir enregistré l'extrait, ouvrez l'URL de votre campagne dans une fenêtre de navigateur privée pour confirmer qu'elle redirige maintenant vers votre page de don.
Option 2 : Rendre le type de publication de campagne non public
Cette option désactive complètement l'URL de campagne unique. Toute personne visitant /campaigns/[slug]/ verra un 404 WordPress standard. Utilisez ceci si vous préférez que l'URL n'existe pas du tout plutôt que de rediriger.
Ajoutez cet extrait à l’aide d’un plugin d’extraits de code ou du fichier functions.php de votre thème enfant :
add_filter( 'charitable_campaign_post_type', function( $args ) {
$args['public'] = false;
$args['publicly_queryable'] = false;
$args['exclude_from_search'] = true;
return $args;
} );
Après avoir ajouté l’extrait, videz vos permaliens : allez dans Paramètres > Permaliens dans votre administration WordPress et cliquez sur Enregistrer les modifications. Vous n’avez rien à changer dans cet écran. L’acte de sauvegarder régénère les règles de réécriture afin que l’URL de la campagne cesse de se résoudre.
Que se passe-t-il pour l’intégration de la campagne
Les deux options laissent l’intégration de la campagne intacte :
- Le shortcode
[charitable_campaign]continue de s’afficher sur votre page de don. - Le bloc Charitable de campagne continue de s’afficher sur votre page de don.
- Le titre, l’histoire, l’objectif et le formulaire de don de la campagne continuent de se charger.
- Les nouveaux dons sont toujours rattachés à la campagne et mettent à jour sa progression.
L’intégration lit directement l’article de campagne par son ID, donc peu importe si l’URL de la campagne est publique, redirigée ou renvoie une erreur 404.
Quelle option devriez-vous choisir ?
| Utilisez l’Option 1 (redirection) si… | Utilisez l’Option 2 (non publique) si… |
|---|---|
| Une URL de campagne a peut-être déjà été partagée, indexée ou liée depuis quelque part. | L’URL de la campagne n’a jamais été partagée et n’apparaît pas dans les résultats de recherche. |
| Vous souhaitez une transition en douceur pour tout visiteur qui trouve l’ancienne URL. | Vous préférez que l’URL ne se résolve pas du tout. |
| Vous souhaitez que les moteurs de recherche suivent la redirection 301 et suppriment l’ancienne URL au fil du temps. | Vous ne vous souciez pas de préserver la présence de l’URL dans les moteurs de recherche. |
Dans la plupart des cas, l’Option 1 est le choix le plus sûr car elle gère à la fois les nouveaux visiteurs et toute personne qui a déjà l’URL.
Questions fréquemment posées
Cela affectera-t-il le suivi des dons ?
Non. Les dons sont rattachés à l’enregistrement de la campagne elle-même, pas à l’URL. Que quelqu’un fasse un don via votre formulaire intégré sur /donate/ ou (avant la redirection) la page de campagne créée automatiquement, le don arrive sur la même campagne et compte pour le même objectif.
Cela supprime-t-il la campagne de l’administration WordPress ?
Non. La campagne apparaît toujours dans Charitable > Campagnes dans votre administration. Vous pouvez la modifier, l’archiver, voir ses dons, etc. Seule l’URL publique change.
Puis-je faire cela pour une campagne mais pas pour les autres ?
Oui – limitez la redirection en vérifiant l’ID de campagne spécifique :
add_action( 'template_redirect', function() {
if ( is_singular( 'campaign' ) && get_queried_object_id() === 123 ) {
wp_safe_redirect( home_url( '/donate/' ), 301 );
exit;
}
} );
Remplacez 123 par l’ID de la campagne que vous souhaitez rediriger. Les autres campagnes continueront d’utiliser leurs URL normales. (L’Option 2 est tout ou rien car elle modifie l’enregistrement du type de publication.)
Qu’en est-il de la page d’archive des campagnes ?
Charitable a déjà désactivé l’archive des campagnes (has_archive => false), donc la visite de /campaigns/ en soi n’affiche pas d’archive Charitable. Vous n’avez rien d’autre à faire pour la désactiver.
Référence du développeur
Le reste de cette page est destiné aux développeurs qui souhaitent un contrôle plus poussé sur l’enregistrement du type de publication de campagne.
Le filtre
charitable_campaign_post_type s'exécute sur init (priorité 5) juste avant que register_post_type() ne soit appelé. Il reçoit le tableau complet des arguments utilisé pour enregistrer le type de publication campaign, vous pouvez donc modifier l'un de ces éléments :
| Argument | Défaut | Effet |
|---|---|---|
public | vrai | Interrupteur principal pour la visibilité sur le front-end et l'interface d'administration. |
publicly_queryable | vrai | Indique si /campaigns/[slug]/ renvoie vers un modèle unique. |
exclude_from_search | faux | Indique si les recherches /?s= incluent les campagnes. |
has_archive | faux | L'archive des campagnes est déjà désactivée par défaut. |
rewrite | array( 'slug' => 'campaigns', 'with_front' => true ) | Le slug d'URL pour les campagnes individuelles. |
show_in_nav_menus | vrai | Indique si les campagnes peuvent être ajoutées aux menus de navigation depuis Apparence > Menus. |
Changer le slug d'URL au lieu de le désactiver
Si vous préférez conserver la page de campagne individuelle mais changer son préfixe d'URL, filtrez le slug de réécriture. Par exemple, pour changer /campaigns/[slug]/ en /fundraise/[slug]/ :
add_filter( 'charitable_campaign_post_type', function( $args ) {
$args['rewrite']['slug'] = 'fundraise';
return $args;
} );
Veuillez vider les permaliens après la modification (Paramètres > Permaliens > Enregistrer les modifications).
Pourquoi with_front est important
La valeur par défaut 'with_front' => true signifie que WordPress ajoute le préfixe de vos permaliens à l'URL de la campagne. Si la structure de vos permaliens WordPress est /news/%postname%/, vos URL de campagne seront /news/campaigns/[slug]/. Définissez 'with_front' => false pour ignorer le préfixe des permaliens :
add_filter( 'charitable_campaign_post_type', function( $args ) {
$args['rewrite']['with_front'] = false;
return $args;
} );
Videz les permaliens après la modification.
Comment l'intégration continue de fonctionner
Le shortcode [charitable_campaign] et le bloc de campagne résolvent tous deux en requêtes Charitable_Campaign qui chargent la publication par ID. Ces requêtes utilisent get_post() et des recherches directes de métadonnées, qui sont indépendantes des indicateurs public et publicly_queryable. Les indicateurs contrôlent uniquement si le contrôleur front-end de WordPress acheminera une requête vers le modèle de campagne individuelle. Leur désactivation n'empêche pas le code PHP de lire la publication.
Référence des hooks
| Hook | Type | Utilisez-le pour |
|---|---|---|
charitable_campaign_post_type | Filtre | Modifier les arguments passés à register_post_type() pour les campagnes. S'exécute sur init priorité 5. |
template_redirect | Action | Déclencher votre redirection après que WordPress a analysé la requête et choisi un modèle, mais avant que le modèle ne soit chargé. Hook WordPress standard. |
is_singular( 'campaign' ) | Conditionnel | Vrai lorsque la requête actuelle concerne une campagne unique. À utiliser dans template_redirect pour limiter la portée de la redirection. |





