• Решено dmitrylutsenko

    (@dmitrylutsenko)


    Добрый день, уважаемые форумчане 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);

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

    O

    (@perdyllo)

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

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

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

    • Ответ изменён 6 лет назад пользователем O.
    • Ответ изменён 6 лет назад пользователем O.
    • Ответ изменён 6 лет назад пользователем O.
    Автор dmitrylutsenko

    (@dmitrylutsenko)

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

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

    Автор dmitrylutsenko

    (@dmitrylutsenko)

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

    Автор dmitrylutsenko

    (@dmitrylutsenko)

    Встроил на время в 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

    • Ответ изменён 6 лет назад пользователем dmitrylutsenko.
    Автор dmitrylutsenko

    (@dmitrylutsenko)

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

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

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