Erstellen Sie für Anhangseiten eine Basis-URL

Wenn ich ein Bild mit dem Dateinamen 8.jpg hochlade, wird der Permalink http://www.example.com/8 – was ich wirklich nicht will. Wie kann ich festlegen, dass Anhänge ihren Mime-Typ als Basis für die URL verwenden? http://example.com/image/8 ?

 add_action('init', function(){ add_rewrite_endpoint( 'media', EP_PERMALINK | EP_ATTACHMENT| EP_PAGES ); flush_rewrite_rules(true); } ); 

Ich bin nicht wirklich sicher, wie Endpunkte funktionieren, aber ich kann /media/8 in einen Post verwandeln …

Solutions Collecting From Web of "Erstellen Sie für Anhangseiten eine Basis-URL"

Endpoints sind zum Hinzufügen von zusätzlichen Abfrage-Vars zu bestehenden Routen. Ich denke, dass Sie hier nur eine Vanilla Rewrite-Regel haben wollen:

 function wpd_media_image_rewrite_rule() { add_rewrite_rule( '^image/([^/]*)/?', 'index.php?post_type=attachment&name=$matches[1]', 'top' ); } add_action( 'init', 'wpd_media_image_rewrite_rule' ); 

Möglicherweise möchten Sie dort gültige Mime-Typen durchlaufen und für jede eine Regel hinzufügen. Sie müssen auch die Umschreibungen für diese function flush_rewrite_rules , um zu arbeiten, aber verwenden Sie nicht flush_rewrite_rules auf Init wie im obigen Beispiel. Regeln sollten nur gelöscht werden, wenn sie sich ändern. Eine schnelle Möglichkeit, sie zu löschen, ist einfach die Permalinks-Einstellungsseite zu besuchen.

Sie müssen außerdem mindestens attachment_link filtern, um die korrekte URL für nicht verbundene Medien auszugeben, wie z.

 function wpd_media_image_att_link( $link, $post_id ){ $post = get_post( $post_id ); if( 0 == $post->post_parent ){ $link = home_url( user_trailingslashit( 'image/' . $post->post_name ) ); } return $link; } add_filter( 'attachment_link', 'wpd_media_image_att_link', 10, 2 ); 

Hier prüfen wir, ob der Anhang keinen Elternteil hat, denn wenn er an einen Beitrag angehängt ist, wäre er ein Kind des Elternposts. Sie können hier auch den Mime-Typ überprüfen und das image/ Teil dynamisch nach Typ gestalten.

Es gibt auch die function wp_get_attachment_link , die möglicherweise einen Filter benötigt, wenn dieser irgendwo in der Vorlage verwendet wird. Ich glaube nicht, dass der Core-Admin diese function irgendwo benutzt, aber ich kann mich irren.