web-dev-qa-db-fra.com

Arrêtez WordPress de réserver des slugs pour les éléments multimédias?

J'éprouve un comportement étrange, qui se produit apparemment "en dehors de la boîte" avec WordPress.

Si je télécharge un fichier via le gestionnaire de médias appelé: services.jpg;, essayez de créer une page avec le lien permanent http://example.com/services/;. Le slug services-2 est indiqué, car la pièce jointe utilise déjà ce slug.

Visiter http://example.com/services/ charge la page de pièce jointe.

Je n'ai activé aucun plugin ni ajouté quoi que ce soit dans functions.php pour modifier les réécritures des pièces jointes.

Quelqu'un a-t-il déjà couru ça? Savoir par où commencer pour désactiver cette fonctionnalité?

6
Matt Keys

Merci pour la réponse tout le monde. J'ai joué avec la solution de macemmek et je pense que cela m'a conduit à une solution encore meilleure:

add_filter( 'wp_unique_post_slug_is_bad_attachment_slug', '__return_true' );

C'est tout ce qui est nécessaire. Ceci "sautera" automatiquement le slug assigné par défaut sur n'importe quelle pièce jointe. Ainsi, une pièce jointe pouvant normalement recevoir les "services" slug recevra désormais le slug "services-2".

5
Matt Keys

Vous pouvez accrocher wp_unique_post_slug () et ajouter une chaîne au slug original si la publication est un type de pièce jointe. Le slug original basé sur le titre du post restera libre.

MISE À JOUR après le commentaire de Rachel Baker: le suffixe slug d'origine est une chaîne aléatoire. Cela ne garantit pas l'unicité mais peut suffire pour des cas d'utilisation simples.

add_filter( 'wp_unique_post_slug', 'wpse17916_unique_post_slug', 10, 6 );
function wpse17916_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) {
  if ( 'attachment' == $post_type )
    $slug = $original_slug . uniqid( '-' );
  return $slug;
}
4
Przemek Maczewski

Le commentaire de Tom est correct, en ce sens que c'est un comportement normal et que vous ne pouvez pas faire grand chose pour l'arrêter.

Mais vous pouvez changer les slugs après que les choses soient téléchargées/créées. Bien que cela ne soit pas le cas si les liens sont connus/publicisés/répertoriés dans les moteurs de recherche, si vous essayez simplement de résoudre ce problème de temps en temps après un téléchargement, vous pouvez éditer le slug de la pièce jointe (par exemple, services-attachment). et éditez ensuite le slug de la page en services.

Pour ce faire, allez dans Médias, cliquez sur Modifier sous la pièce jointe que vous souhaitez modifier (ou si vous êtes en mode grille, cliquez sur la pièce jointe, puis sur Modifier les détails), puis en haut, vous verrez le lien permanent .. en cliquant sur Éditer ici laissez-vous changer la limace.

Répétez ensuite le même processus pour la page elle-même.

1
Tim Malone

Je pense que ce que vous devez faire ici est d’utiliser une redirection pour empêcher les gens de voir les éléments des médias. Cela correspond bien aux autres solutions présentées ici. Préférez quelque chose dans les slugs des éléments multimédias, puis rédigez une redirection pour "se débarrasser" des pages multimédia.

0
DigitalDesignDj