WordPress как на ладони
wordpress jino

Отключаем уведомления (пинги) на свои же посты

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

Кому как, а мне не нравится, когда я ставлю ссылку о ранее написанной статье в своей новой статье и затем получаю уведомление (в виде комментария) на свою старую статью.

Если вас это тоже смущает и вы хотите, чтобы ваши старые статьи не получали уведомления с новых статей, то вставьте следующий код в файл темы function.php:

## Отключаем пинги на свои же посты
add_action('pre_ping', 'kama_disable_inner_ping');
function kama_disable_inner_ping( &$links ){
	foreach( $links as $k => $val ){
		if( false !== strpos( $val, str_replace('www.', '', $_SERVER['HTTP_HOST']) ) ) 
			unset( $links[$k] );
	}
}

Умам пытливым, но не разобравшимся что делает код: перед отправлением пингов проверяется массив с адресами ссылок, взятых из записи, если в адресе ссылки присутствует адрес вашего сайта: $_SERVER['HTTP_HOST'], то такая ссылка удаляется из массива, а это значит что уведомления на неё не последует.

Полностью отключаем уведомления по ссылкам из статьи

Пример выше показывает как отключить пинги только на свои стать, но если нужно вообще отключить все уведомления, то зайдите в «Настройки обсуждения» и уберите галочку «Пытаться оповестить блоги, упоминаемые в статье»:

При таком полном отключении, предыдущий код вам уже не нужен, потому что пинги не будут отправляться вовсе!

14 комментов
Полезные 1 Все
  • Валентин cайт: www.livingthedream.ru

    Спасибо. Случайно наткнулся на этот чрезвычайно полезный пост, я как раз жутко ненавижу пинги на свои же посты.

    Ответить7.6 лет назад #
  • Саша

    даже не знаю, как написать... За последние два-три года Ваш блог (для меня)самый познавательно-интересный (хоть я читаю всего вторую статью). Это как побывать в двух недельной командировке в Хельсинки, и вернуться в Москву через аэропорт в Англии (бывают такие, вот маршруты) и получить больше впечатлений от двух часов проведённых в английском аэропорту, чем от посещения и прибывания в Финляндии. Это было такое небольшое отступление, навеяло, что-то... А по существу: пойду в свои блоги отключать этот атавизм (раньше не знал, как, да особо и не искал).

    Ответить6.7 лет назад #
  • Саша

    если я правильно понимаю, название функции задаётся произвольное и

    kama_disable_inner_ping

    тут можно хоть dima_pupkin написать? я правильно понимаю? конечно dima_pupkin надо будет добавить и в

    add_action( 'pre_ping', 'kama_disable_inner_ping' );

    вместо

    kama_disable_inner_ping

    . То есть таким незатейливым путём идёт продвижение Вашего сайта (упоминания в коде, который поисковые роботы тоже переваривают). Или это по-типу личная подпись? smile

    -1
    Ответить6.7 лет назад #
    • Kama5410

      Вы все правильно понимаете, продвижения тут нет, скорее подпись smile

      1
      Ответить6.7 лет назад #
  • Shtirlitz cайт: blogbankir.ru

    Спасибо, сделал себе smile Дурацкая фигня, которую надо вырезать из вп

    Ответить4.9 года назад #
  • Максим cайт: www.acg.com.ua

    скажите а как убрать тоже самое но чтобы когда ссылку вставляют на чужом сайте, мне не приходили уведомления о новом комментарии?

    Ответить1.4 год назад #
    • Максим cайт: www.acg.com.ua

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

      1
      Ответить1.4 год назад #
  • Kama, а Вы используете на своём сайте оповещения для сторонних блогов и оповещения с других блогов?

    Ответить2 месяца назад #
    • Kama5410

      Оповещения с блогов принимаются, но сам блог не оповещает.

      1
      Ответить2 месяца назад #
      • Бытует мнение, что уведомления рассылают программы, а ссылки в уведомлениях ведут на продвигаемые сайты. Т.е. перейдя по ссылке в уведомлении на страницу, скорее всего не найдёшь там своей ссылки! Таким образом, это явный спам shout
        А как у Вас обстоят дела со спамом? Появляется ли он у Вас в уведомлениях? И получаете ли Вы желаемое, используя оповещения со сторонних ресурсов?

        Ответить2 месяца назад #
        • Kama5410

          Нет, я таких уведомлений без ссылки не получаю... Даже не в курсе, как часто они отправляются. У меня kama spamblock плагин установлен, он это фиксирует:

          25.07.2010 Добавил проверку обратной ссылки при пингах и трэкбэках. Теперь, трэкбэк уведомление появится только в том случае, если будет найдена обратная ссылка на сайт откуда пришло уведомление.

          1
          Ответить2 месяца назад #
          • good , обязательно гляну. Как я понимаю, Вы отключили на сайте HTTP заголовок X-Pingback и удалили точку доступа rel="pingback" href=".../xmlrpc.php" из head и вообще отключили все методы XML-RPC... разве пингбэки после этого не перестают работать? Или я видимо не понимаю что-то? help Может отключение HTTP заголовка и ссылки (куда оставлять пингбек) не влияет на это? Или Вы используете какой-то код?

            Ответить2 месяца назад #
            • Kama5410

              Я ничего не отключал! Но ты все правильно говоришь. Все это нужно чтобы работали трекбэки. Так логика работы такая:

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

              • Проходит по ссылке, смотрит заголовок x-pingback:, если есть отправляет на УРЛ указанный в этом заголовке уведомление.

                Для ВП такой URL смотрит на файл xmlrpc.php. Там огромный класс отвечает за все это дело. В частности там разделяются запросы для которых нужна авторизация и нет. Этот запрос такой для которого не нужна авторизация. Поэтому, если например выключить xmlrpc через фильтр:

                // отключает XML-RPC методы которые требуют авторизацию
                add_filter( 'xmlrpc_enabled', '__return_false' );

                То уведомления все равно будут работать!

              • Если x-pingback: не найден, то ВП ищет дальше по полученному HTML контенту метатег rel="pingback", если нашел делает все тоже самое.

                Однако замечу, что из коробки ВП не добавляет этот метатег в HEAD темы, поэтому у меня его и нет. Но его можно вручную прописать, если надо, возможно мне стоит его прописать, я не заморачивался на эту тему как-то.

              --

              Благодаря твоему комменту, обнаружил что не везде, у меня x-pingback: проставлен, как выяснялось - это потому что при регистрации новых типов записей в register_post_type() нужно включать поддержку 'trackbacks' в параметре supports, а у меня не была она включена... Но странно что ping_status у записей был то open, то closed, я что-то не понял по какой это логике он open был у некоторых записей (врубил всем, в общем).

              Спс за комменты! thank_you

              1
              Ответить2 месяца назад #
Здравствуйте, !     Войти . Зарегистрироваться