Intereting Posts
Заголовок сообщения из выбранной категории в меню Пейджинговые комментарии не показывают Ограничить роли, отображаемые в users.php, в зависимости от пользовательской роли Как я могу узнать, что на самом деле делает вызов `apply_filter`? Как перенаправить действие = зарегистрировать ссылку на странице с потерянным паролем на другую ссылку? Постоянное изменение таксономии Форма, которая отправляет данные на панель администратора и может экспортировать ее Отображать различные материалы для разных стран? Несколько циклов WP_Query с разбиением на страницы Пустое пространство вместо панели администратора Фантастические плюсы и минусы Почему деактивация плагина вызывает ошибку: «У вас недостаточно прав для доступа к этой странице»? Обновление метаданных пользователя при выходе из системы ACF проверяет, имеет ли переменная http, если else возвращает строку Архив в боковой панели с выпадающим списком Year-Month-Day

Хороший плагин для управления исходящими ссылками?

Я посмотрел вокруг и нашел хороший плагин WordPress. Я знаю, что это вопрос для покупок, но такой важный аспект управления блогом WordPress я удивлен, обнаружив, что стандартного выбора не существует. В частности, мне нужен плагин, который поможет:

  • Установите rel = "nofollow"
  • Открыть исходящие ссылки в новой вкладке / окне
  • Массовая обработка
  • В хорошем состоянии

Что ты используешь?

Я могу придумать два метода для достижения этого, либо будет одинаково справедливым. Я расскажу о плюсах и минусах каждого в конце объяснения для них.

  1. Использовать короткий код

    Определите [wpse47706_link] , скажем [wpse47706_link] . Вероятно, вы захотите присвоить ему атрибут href . Используйте это для каждой отдельной ссылки на вашем сайте, как внутри, так и снаружи. Когда вы идете вывести фактический текст, проанализируйте url ( parse_url() ) и получите имя хоста. Сравните это с URL сайта. Если он соответствует, примените один набор правил, иначе примените другой. Вы можете контролировать их с панели управления, если вы так себя чувствуете (это API настроек, совершенно другая тема).

    профи

    • эффективный с ресурсами
    • глобальный контроль легко

    минусы

    • не обеспечивает индивидуальный контроль
    • контроль над ссылками из разных регионов может стать сложным, особенно если вы хотите динамически генерировать области настроек
  2. Анализ содержимого сайта

    Разбирая содержимое всего сайта, вы можете получить каждую ссылку на сайте. Вам нужно было бы выяснить, что вы делаете и не хотите разбирать, и, вероятно, сделать много фоновой работы … что может стать довольно неприятным. Когда у вас есть весь контент сайта, проанализируйте его для ссылок (с регулярным выражением) и выведите их. Из-за метода, с помощью которого они получены, будет относительно просто организовать их по местоположению на сайте, вплоть до уровня ссылок в отдельной записи или виджета. Как только вы получите все это, вы можете изменить их (а затем впоследствии переписать их в источнике) по своему вкусу. Это может быть сделано из какого-то интерфейса администратора с флажками и т. Д. Или программно на основе набора правил, которые вы определяете.

    профи

    • намного более тонкое управление, вплоть до уровня отдельной линии связи
    • вывод ссылок более эффективен (поскольку для него не требуется PHP, поскольку изменения производятся непосредственно в db)

    минусы

    • прямое изменение содержимого (как правило, плохая идея)
    • если у вас много ссылок, пользовательский интерфейс может стать трудным для управления
    • Я могу представить, что загрузка страницы управления становится довольно тяжелой
    • Изменения могут быть перезаписаны автором
    • не позволяет контролировать ссылки, не сохраненные в db (тогда как через do_shortcode() другой метод делает)

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

Для области, которую вы определяете, это вопрос определения правильных фильтров, хотя заголовок «Управление исходящими ссылками» намного шире.

Для вашей области:

a) настройте свой диапазон фильтров, например «замените в постконтент»: the_content: см. http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content (но также см. bookmark_list, comment_text, get_comment_author_link, widget_text и т. д. … для другие места для фильтрации)

b) определить регулярное выражение для поиска исходящих ссылок, например:

 const HTML_REF_REGEX2 = '/<a(.*?)href=[\'"](.*?)[\'"](.*?)>(.*?)<\\/a>/i'; 

c) от вызова фильтра функция, которую preg_replace_callback представляет найденный uri, например, с помощью

 $r_content = preg_replace_callback(self::HTML_REF_REGEX2, array($this,'DoStuffToToUri'), $content); 

d) в DoStuffToUri делать то, что вы хотите для внешних ссылок, например: добавить no follow, добавить _blank, поместить значок перед каждой ссылкой и т. д. и «перестроить» исходящую ссылку с тем, что вы добавили, например:

 return '<a' . $arrUrlMatches[1] . 'href="' . $arrUrlMatches[2] . '"' . $arrUrlMatches[3] .'>' . $arrUrlMatches[4] . '</a>'; 

Однако … «управление исходящими ссылками» означало бы гораздо больше, чем просто добавление простых фильтров: вам нужен список просмотра всех исходящих ссылок, включая. Возврат HTTP-статуса и возможные перенаправления, их значение с точки зрения ссылок на facebook, твитов, google любит, pr, рейтинг алексей и т. Д., Автоматическое отключение 404-х, местоположение от того, где оно вызывается, чтобы вы могли щелкнуть и отредактировать исходящий URL-адрес, и т.д…

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

 if (!((substr($str_original_uri_uri,0,7) == 'http://' ) || (substr($str_original_uri_uri,0,8) == 'https://') || (substr($str_original_uri_uri,0,7) == 'file://' ) ) ) { return false; } 

и материал внутри «текстовой» области исходящей ссылки (если вы хотите изменить материал внутри «содержимого» исходящей ссылки (может быть странным), например:

 if (strstr(trim($str_original_uri_display_text), '<')) { return false; } 

вы также можете исключить определенные типы файлов, например:

 $str_original_uri_type_extension = EdlUtils::GetUriExtension($str_original_uri_uri, '.', 1, 1); if ($str_original_uri_type_extension != false) { if (stristr($this->mStrNotAllowedExtensions, $str_original_uri_type_extension) != false) { $bool_href_valid=false; } } 

Вы также можете зарегистрировать те, которые исключены, чтобы их можно было «скорректировать», если это необходимо.

pps-бит кода для замены: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-metadata.php