Unerwünschte Medienbibliotheks-URLs in Posts?

Als ich in meinem Blog ein wenig nach Inhalten suchte, bemerkte ich zu meinem Schrecken und Entsetzen, dass einzelne Bilder aus der Medienbibliothek ihre eigenen URLs generieren, die Google irgendwie findet und indexiert!

Zum Beispiel diese Seite:
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/

Enthält dieses Bild:
http://img.daswordpress.com/urls/bio-jarrod-dixon.jpg

Was gut ist, aber irgendwie wird dieses Bild auch als eigene URL und “post” veröffentlicht:
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/bio-jarrod-dixon/

Das ist extrem unerwünscht!

Ich habe die Medieneinstellungen in WordPress überprüft und die Medienbibliothek durchsucht, aber ich habe keine Möglichkeit, dieses Verhalten zu deaktivieren. Irgendwelche Ideen?

Solutions Collecting From Web of "Unerwünschte Medienbibliotheks-URLs in Posts?"

Das, was du sagst, ist unerwünscht, ist nur normale functionalität unter WordPress und kann nicht entfernt werden. Es gibt jedoch Dinge, die Sie tun können, um die unerwünschte URL auf etwas Nützlicheres zu verweisen.

Hier ist ein Forenbeitrag zu diesem Thema mit einigen interessanten Fixes und einer Beschreibung, was passiert:

http://wordpress.org/support/topic/disable-attachment-posts-without-remove-the-medias

Attachments sind eigentlich ein Post-Typ, also nehmen sie eine Zeile in der Posts-Tabelle, wie es ein Post tut, sie haben immer eine URL zur Verfügung, genauso wie es Posts tun.

dh. example.com/?p=16

16 ist die Post-ID, und ähnliche Posts sind immer mit einer URL wie oben verfügbar. Mediendateien werden nicht einfach als Dateien betrachtet, sie haben mehr Inhalt als Elemente, da sie einen Datensatz in der entsprechenden Tabelle haben, genau wie ein Post oder eine Seite.

Was Sie fragen ist, wie Sie das automatische Vorhandensein einzelner Anhangs-URLs für jedes Medienelement verhindern können (nicht wirklich möglich, da es sich im Wesentlichen um einen Post-Typ handelt, was bedeutet, dass sie immer eine URL für sie sind).

Hier ist ein Vorschlag, nehmen Sie eine beliebige Template-Datei, index.php, page.php, archive.php oder was auch immer Sie möchten, erstellen Sie eine Kopie und benennen Sie sie in image.php oder attachment.php um, wenn Sie alle Medien als Ziel haben wollen . Öffnen Sie die Datei, entfernen Sie die Schleife, speichern Sie … und laden Sie eine der Anhangseiten (wie die, die Sie zuvor bereitgestellt haben).

Mein Punkt ist, alles, was Sie tun müssen, ist eine Anlage Vorlagendatei erstellen: http://codex.wordpress.org/Template_Hierarchy
http://codex.wordpress.org/Template_Hierarchy#Attachment_display

Wenn Sie das möchten, könnten Sie theoretisch eine Weiterleitung in die Anhangsvorlage einfügen, damit einzelne Anhangsansichten umgeleitet werden (oder eine beliebige Anzahl anderer Dinge, die Sie tun möchten).

Jemand hat genau das gepostet, eine attachment.php , die zum Umleiten in den Ordner ” /themes ” geht:

 < ?php header ('HTTP/1.1 301 Moved Permanently'); header ('Location: '.get_permalink($post->post_parent)); ?> 

Ich dachte mir, es ist an der Zeit, dass ich zumindest meine Hand ausprobiere, um Attachment-Seiten auszulöschen.

Hier ist mein erster Versuch …

 add_filter( 'attachment_fields_to_edit', 'wpse_25144_attachment_fields_to_edit', 10000, 2 ); function wpse_25144_attachment_fields_to_edit( $form_fields, $post ) { $url_type = get_option( 'image_default_link_type' ); if( 'post' == $url_type ) { update_option( 'image_default_link_type', 'file' ); $url_type = 'file'; } $form_fields['url'] = array( 'label' => __('Link URL'), 'input' => 'html', 'html' => wpse_25144_image_link_input_fields( $post, $url_type ), 'helps' => __('Enter a link URL or click above for presets.') ); return $form_fields; } function wpse_25144_image_link_input_fields($post, $url_type = '') { $file = wp_get_attachment_url($post->ID); if( empty( $url_type ) ) $url_type = get_user_setting( 'urlbutton', 'file' ); $url = ''; if( $url_type == 'file' ) $url = $file; return " 
"; } add_filter( 'query_vars', 'wpse_25144_query_vars', 10000, 2 ); function wpse_25144_query_vars( $wp_query_vars ) { foreach( $wp_query_vars as $i => $qv ) { if( in_array( $qv, array( 'attachment', 'attachment_id' ) ) ) unset( $wp_query_vars[$i] ); } return $wp_query_vars; } add_filter( 'attachment_link', 'wpse_25144_attachment_link', 10000, 2 ); function wpse_25144_attachment_link( $link, $id ) { $link = wp_get_attachment_url( $id ); return $link; } add_filter( 'rewrite_rules_array', 'wpse_25144_rewrite_rules_array', 10000 ); function wpse_25144_rewrite_rules_array( $rewriteRules ) { foreach( $rewriteRules as $pattern => $query_string ) { if( false === strpos( $pattern, 'attachment' ) && false === strpos( $query_string, 'attachment' ) ) continue; unset( $rewriteRules[$pattern] ); } return $rewriteRules; }

Entfernt das Umschreiben der Anlage, aktualisiert die Anlagenverknüpfungen auf die Anlagendatei (statt dessen Permalink), entfernt die var der Abfrage der Anlage und entfernt auch die Möglichkeit, Anlagen mit dem jetzt nicht existierenden Anlagenpermalink zu verknüpfen.

Offen für Kritik. 🙂

Sie können eine 301-Umleitung für Anhänge auf die Seite ihrer Eltern wie folgt durchführen:

 < ?php /* Plugin Name: Redirect Attachments to Parent (301) Plugin URI: http://wordpress.stackexchange.com/questions/25144/unwanted-media-library-urls-in-posts Description: Redirect any attachemnt pages to their parent's page with 301 redirection Author: Ashfame Version: 0.1 Author URI: http://www.ashfame.com/ */ add_action( 'template_redirect', 'attachment_post_type_redirection' ); function attachment_post_type_redirection() { global $wp_query; if ( is_attachment() ) { wp_redirect( get_permalink( $wp_query->post->post_parent ), 301 ); } } 

Das SEO-Plugin von Yoast hat unter ” Permalinks ” die URL für die Weiterleitung an die übergeordnete Post-URL umgeleitet . Ich habe diese Option verwendet, um das Problem zu beheben. Das Plugin ist erstaunlich.

Dies ist eine verwandte Antwort aus einer verwandten Frage: Deaktivieren Sie Anhangseiten vollständig

Diese Methode ändert Umschreibungsregeln.

Sie können Standard-Umschreibungsregeln filtern und diese für Anhänge entfernen:

 function cleanup_default_rewrite_rules( $rules ) { foreach ( $rules as $regex => $query ) { if ( strpos( $regex, 'attachment' ) || strpos( $query, 'attachment' ) ) { unset( $rules[ $regex ] ); } } return $rules; } add_filter( 'rewrite_rules_array', 'cleanup_default_rewrite_rules' ); 

Vergessen Sie nicht, Ihre Permalinks einmal zu speichern. WordPress wird neue Regeln generieren, ohne irgendetwas mit Anhängen zu tun zu haben.

https://wordpress.stackexchange.com/a/271089/71608