Est-il possible de redéclarer / modifier le slug du type de publication personnalisé existant d'un plugin (sans simplement modifier le plugin)?
Autrement dit, si le plug-in X crée un type de publication personnalisé avec le slug / uncookedtoast /, est-il possible d'ajouter un filtre à functions.php (ou quelque chose de similaire) qui change le slug en / bread /?
custom-post-types
functions
slug
Edbury
la source
la source
Réponses:
Oui, cela est possible, mais si le plugin crée un type de publication personnalisé à l'aide du
rewrite => array('slug' => 'post_type')
paramètre, il est peu probable que vous puissiez remplacer le slug.Chaque fois que des types de publication personnalisés sont créés, les règles de réécriture d'URL sont écrites dans la base de données. En fonction de l'action qui déclenche la création du type de publication personnalisé (telle que l' action init ), WordPress videra les règles de réécriture et restaurera les limaces du type de publication personnalisé quelles que soient les modifications que vous tentez d'apporter.
Cela dit, vous pouvez fournir des slugs personnalisés pour les types de publication personnalisés. L'exemple suivant suppose que vous avez un type de publication personnalisé de
movies
et que vous essayez de changer le/movies/
slug en/films/
.Pour être complet, voici la fonction de base utilisée pour définir le
movies
type de publication personnalisé. Le plugin auquel vous faites référence devrait faire quelque chose comme ceci:Vous pouvez modifier le tableau des options en fournissant vos propres règles personnalisées en fonction du type de publication existant.
Fondamentalement, nous ferons ceci:
Voici comment procéder:
Maintenant, vous aurez deux façons d'accéder à vos films:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Notez que je ne recommande pas d'accrocher le
add_custom_rewrite_rule
dans l'init
action car il se déclenchera trop fréquemment. C'est juste un exemple. Un meilleur endroit pour appliquer la fonction serait l'activation du thème, l'activation du plugin, peut-être l'action save_post, etc.À ce stade, vous souhaiterez peut-être envisager de mettre à jour les permaliens pour le type de publication personnalisé afin d'utiliser le
/movies/
slug. Par exemple, si vous accédez à/films/
, vous verrez une liste de tous vos films, mais le survol du titre révélera que le/movies/
slug est toujours utilisé.Pour aller plus loin, vous pouvez techniquement créer une redirection 301 pour intercepter tous les liens
/movies/
vers la redirection vers leur/films/
homologue, mais tout dépend de ce que vous essayez de faire.la source
$post
dans laadd_custom_rewrite_rule()
fonction, mais cela génère des erreurs dans WP Admin disant `` Essayer d'obtenir la propriété d'un non-objet ''. Comment puis-je obtenir $ post pour obtenir la méta-valeur?Ce code a bien fonctionné pour mon thème enfant. Nécessaire pour changer le slug "program" en "place".
la source
$args['has_archive'] = false
et cela a fonctionné.