it-swarm.com.de

WordPress daran hindern, Slugs für Medienelemente zu reservieren?

Ich habe ein merkwürdiges Verhalten, das anscheinend bei WordPress "out of the box" passiert.

Wenn ich eine Datei über den Medienmanager mit dem Namen: services.jpg; hochlade, versuche ich, eine Seite mit dem Permalink http://example.com/services/; zu erstellen. Stattdessen wird der Slug services-2 angegeben, da der Anhang diesen Slug bereits verwendet.

Durch das Aufrufen von http://example.com/services/ wird die Seite mit den Anhängen geladen.

Ich habe keine Plugins aktiviert oder irgendetwas zu functions.php hinzugefügt, um die Neuschreibungen für Anhänge zu ändern.

Hat jemand schon einmal darauf gestoßen? Wissen Sie, wo Sie anfangen müssen, um diese Funktionalität zu deaktivieren?

6
Matt Keys

Vielen Dank für die Antwort an alle. Ich habe mit der Lösung von macemmek herumgespielt und denke, das hat mich zu einer noch besseren Lösung geführt:

add_filter( 'wp_unique_post_slug_is_bad_attachment_slug', '__return_true' );

Das ist alles was benötigt wird. Dadurch wird der standardmäßig zugewiesene Slug in einem Anhang automatisch "übersprungen". Ein Anhang, der normalerweise den Slug "services" erhält, erhält nun den Slug "services-2".

5
Matt Keys

Sie können wp_unique_post_slug () einbinden und eine Zeichenfolge an den ursprünglichen Slug anhängen, wenn es sich bei dem Post um einen Anhangstyp handelt. Der Original-Slug basierend auf dem Post-Titel bleibt frei.

AKTUALISIERT nach Rachel Bakers Kommentar: Das ursprüngliche Slug-Suffix ist eine zufällige Zeichenfolge. Es garantiert keine Eindeutigkeit, kann aber für einfache Anwendungsfälle ausreichend sein.

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

Toms Kommentar ist insofern richtig, als dass dies ein normales Verhalten ist und man nicht viel tun kann, um es zu stoppen.

Aber Sie können die Slugs ändern, nachdem die Dinge hochgeladen/erstellt wurden. Sie sollten dies nicht tun, wenn die Links in Suchmaschinen bekannt/veröffentlicht/aufgelistet sind. Wenn Sie jedoch nur versuchen, dieses Problem gelegentlich nach einem Upload zu beheben, können Sie den Slug des Anhangs bearbeiten (so etwas wie services-attachment). Bearbeiten Sie dann den Block der Seite, um services zu sein.

Gehen Sie dazu zu Medien, klicken Sie unter dem Anhang, den Sie bearbeiten möchten, auf Bearbeiten (oder klicken Sie in der Rasteransicht auf den Anhang und dann auf Weitere Details bearbeiten). Oben sehen Sie dann den Permalink. Klicken Sie auf Hier bearbeiten Lass dich die Schnecke wechseln.

Wiederholen Sie dann den gleichen Vorgang für die Seite.

1
Tim Malone

Ich denke, Sie müssen hier eine Umleitung verwenden, um zu verhindern, dass die Medienelemente angezeigt werden. Es passt gut zu den anderen hier vorgestellten Lösungen. Stellen Sie den Medienelement-Slugs etwas voran, und schreiben Sie eine Umleitung, um die Medienseiten loszuwerden.

0
DigitalDesignDj