Поддержка Проблемы и решения «Мусорные страницы» типа attachment

  • Добрый день, уважаемые форумчане WordPress.

    Обращаюсь к вам за помощью или советом.

    На сайте появились ненужные страницы типа вложений.
    Решение я, конечно же посмотрел, и выяснил, что большая часть страниц — это страницы вложений для медиафайлов. Решением было дополнить functions.php

    
    add_action('template_redirect', 'template_redirect_attachment');
     function template_redirect_attachment() {
     global $post;
     // Перенаправление на основную запись:
     if (is_attachment()) {
     wp_redirect(get_permalink($post->post_parent));
     }
     }

    Большая часть страниц была отсеяна таким образом, но есть другие, у которых поведение схожее. Clearfy не помог с данными страницами вложений.
    Отображаются отдельные страницы для картинок и куски текста для записей блога, комментариев.

    Уже не знаю, что можно предпринять, хоть всю эту «простыню» url на 404 редиректить…
    Прошу вас, дайте пожалуйста совет, что делать?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Немного доработанный код:

    //перенаправление с вложений
    function winnet_attachment_redirect() {
    $post = get_post(); //замена параметру global $post
    if (is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent != 0) ) {
    wp_redirect(get_permalink($post->post_parent), 301); // перенаправление на постоянную страницу вложения
    exit;
    } elseif (is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent < 1) ) {
    wp_redirect(get_bloginfo('wpurl'), 302); // перенаправление отдельного документа или картинки post/page
    exit;
    }
    }
    //перенаправление с архивов дат
    function winnet_archive_redirect()
    {
    $post = get_post();
    if (is_date())
    {
    wp_redirect(home_url(), 301); // редирект home
    exit;
    }
    }
    add_action('template_redirect', 'winnet_attachment_redirect' ,1);
    add_action('template_redirect', 'winnet_archive_redirect' ,1);

    Учтите, здесь включено еще перенаправление с архивов, так что, если их используете, часть кода придется обрезать.
    Сбросьте ссылки на то, что вас еще раздражает. Не совсем понял, что вы имели ввиду помимо вложений.

    Решением было дополнить functions.php

    Это очень плохое решение — замусоривать functions.php. Тем более проблема не была решена и тем более при наличии готовых решений — во всех сео-плагинах есть опция типа этого:

    PS Только не говорите ахинеи типа «у меня сайт без плагинов»

    • Ответ изменён 2 года, 11 месяцев назад пользователем O.
    • Ответ изменён 2 года, 11 месяцев назад пользователем O.
    • Ответ изменён 2 года, 11 месяцев назад пользователем O.

    Уважаемый @perdyllo.

    Я попробовал и Yoast Seo загодя до написания моего вопроса на этом форуме. К сожалению, данный способ не помог.

    Проверил функцией is_attachment() данные ссылки. Это не вложения. Это что-то иное

    Встроил на время в single.php(который используется для вывода этих мусорных страниц) следующий код:

    <script>console.log("<?php if(is_archive()){ echo 'Архив';} else echo 'Не архив'?>");</script>
    <script>console.log("<?php if(is_category()){ echo 'Категория';} else echo 'Не категория'?>");</script>
    <script>console.log("<?php if(is_comment_feed()){ echo 'comment_feed';} else echo '!comment_feed'?>");</script>
    <script>console.log("<?php if(is_page()){ echo 'Постоянная страница';} else echo 'Не постоянная страница'?>");</script>
    <script>console.log("<?php if(is_preview() ){ echo 'Это превью';} else echo 'Не превью'?>");</script>
    <script>console.log("<?php if(is_feed() ){ echo 'Это новость';} else echo 'Не новость'?>");</script>
    <script>console.log("<?php if(is_attachment() ){ echo 'Это вложение';} else echo 'Не вложение'?>");</script>
    <script>console.log("<?php if(is_embed() ){ echo 'запрос для страницы встраивания записи';} else echo 'Не запрос для страницы встраивания записи'?>");</script>

    Все по нулям: http://prntscr.com/o3862w

    Может, я что-то упускаю.
    И именно поэтому не работает редирект с attachment

    • Ответ изменён 2 года, 11 месяцев назад пользователем dmitrylutsenko.

    Что же, проблему я свою решил. Спасибо за советы.

    В общем, может и костыльный способ, но рабочий:
    Я добавил проверку в single.php,
    при которой уточнялось, принадлежит ли текущая страница какой-нибудь категории,
    если нет, то просто выдавал 404 статус и загружал шаблон 404 страницы.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема ««Мусорные страницы» типа attachment» закрыта для новых ответов.