Intereting Posts
Как добавить функцию «Нажмите, чтобы увеличить изображение», с расширенным открытием изображения во всплывающем окне? Отображение результатов поиска 1 Компания или 2 компании Внешний вид плагина WooCommerce и посмотрите Почему WordPress хранит параметры виджетов в многомерном массиве? Показать все термины в пользовательской таксономии со всеми дочерними терминами, завернутыми в ul Как получить одно значение из массива get_post_meta ()? WordPress ajax call возвращает ноль, хотя die () виджет не отображается Проблема с загрузкой PDF-файла Скрыть определенные родительские категории из сообщения Как получить постоянную ссылку с помощью функции get_blog_post в многопользовательском режиме? Получать результаты из пользовательской таблицы данных WordPress Как сделать короткий код? Скрыть отдельные записи пользователей admin Как получить конкретные данные из wp_list_comments вне цикла?

Нежелательные URL-адреса медиа-библиотек в сообщениях?

Когда я занимался поиском контента в нашем блоге, я заметил, что отдельные изображения из медиа-библиотеки каким-то образом генерируют собственные URL-адреса, которые Google каким-то образом находит и индексирует!

Например, эта страница:
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/

Содержит это изображение:
http://img.wordpressask.com/media-library/bio-jarrod-dixon.jpg

Это хорошо, но каким-то образом этот образ также отображается как его собственный URL и «post»:
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/bio-jarrod-dixon/

Это крайне нежелательно!

Я проверил настройки Media в WordPress и просмотрел медиа-библиотеку, но не могу понять, как отключить это поведение. Есть идеи?

Solutions Collecting From Web of "Нежелательные URL-адреса медиа-библиотек в сообщениях?"

Эта вещь, о которой вы говорите, нежелательна, это просто нормальная функциональность в WordPress, и ее нельзя удалить. Однако есть вещи, которые вы можете сделать, чтобы указать нежелательный URL на что-то более полезное.

Вот сообщение форума по этой проблеме с некоторыми интересными исправлениями и описанием того, что происходит:

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

Вложения на самом деле являются типом сообщения, поэтому они берут строку в таблице сообщений, как это делает почта, они всегда будут иметь доступный URL, так же, как и сообщения.

то есть. example.com/?p=16

16 – это идентификатор сообщения, и, как и сообщения, они всегда будут доступны по URL-адресу, указанному выше. Файлы мультимедиа не просто считаются файлами, они имеют для них больше контента, чем элемент, поскольку они имеют запись в таблице сообщений, которая им соответствует, как и сообщение или страница.

Что вы спрашиваете, так это то, как остановить автоматическое существование отдельных URL-адресов вложений для каждого элемента мультимедиа (не совсем возможно, потому что они по существу являются типом сообщения, что означает, что они всегда будут для них URL-адресом).

Вот предложение: возьмите любой файл шаблона (темы), index.php, page.php, archive.php или что угодно, создайте копию и переименуйте ее в image.php или attachment.php, если вы хотите настроить таргетинг на все носители , Откройте файл, удалите цикл, сохраните … и загрузите одну из страниц вложений (например, тот, который вы предоставили ранее).

Моя точка зрения, все, что вам нужно сделать, это создать файл шаблона вложения: http://codex.wordpress.org/Template_Hierarchy
http://codex.wordpress.org/Template_Hierarchy#Attachment_display

Если бы вы хотели, теоретически вы могли бы перенаправить в шаблон вложения, чтобы отдельные виды вложений были перенаправлены (или любое количество других вещей, которые вы могли бы захотеть сделать).

Кто-то опубликовал именно это, файл attachment.php который входит в вашу папку /themes для перенаправления:

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

Я подумал, что пришло время, по крайней мере, попробовав мою руку, чтобы стереть страницы вложений.

Вот мой первый снимок …

 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 " <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br /> <button type='button' class='button urlnone' title=''>" . __('None') . "</button> <button type='button' class='button urlfile' title='" . esc_attr($file) . "'>" . __('File URL') . "</button> "; } 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; } 

Удаляет перезаписывание вложений, обновляет ссылки вложений, указывая на файл вложения (вместо его постоянной ссылки), удаляет вложенные запросы vars, а также удаляет возможность привязки вложений к текущей несуществующей привязной привязке.

Открыто для критики. 🙂

Вы можете сделать 301 переадресацию для вложений на страницу своего родителя следующим образом:

 <?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 ); } } 

Плагин SEO Yoast имеет ссылку «Перенаправить URL в URL-адрес родителя» под постоянными ссылками . Я использовал этот вариант для решения проблемы. Плагин потрясающий.

Это связанный ответ из связанного с этим вопроса: полностью отключить страницы вложений

Этот метод изменяет правила перезаписи.

Вы можете фильтровать правила перезаписи по умолчанию и удалять их для вложений:

 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' ); 

Не забудьте повторно сохранить свои постоянные ссылки один раз. WordPress генерирует новые правила без каких-либо привязок к вложениям.

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