Добавление фильтров в дочернюю тему в WordPress - PullRequest
1 голос
/ 04 мая 2011

У меня есть дочерняя тема в WordPress, основанная на двадцати.

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

Я положилследующий код в моем functions.php файле в дочерней теме, но он не влияет на отображение заголовка сообщения:

add_filter( ‘the_title’, ‘ib_strip_tags_from_titles’ );
function ib_strip_tags_from_titles( $title ) {
  $title = strip_tags( $title );
  return $title;
}

Есть предложения?

1 Ответ

0 голосов
/ 20 мая 2011

strip_tags() удаляет только теги HTML - в вашем случае это изменит название с

Some Text <a href="http://someurl.com">LINK</a> Other Text

до Some Text LINK Other Text

Если я вас правильно понимаю, это то, что вы хотите:

function ib_remove_links_from_titles($title) {
    $title = preg_replace('/<a([^<]*)">([^<]*)<\/a>/', '', $title);
    return $title;
}
add_filter( 'the_title', 'ib_remove_links_from_titles' );

в соответствии с приведенным выше примером будет выдано Some Text Other Text

Обратите внимание, что, учитывая, что вы пытались выполнить задачу с помощью strip_tags(), я предполагаю, что "зашифрованные URL", как вы их описали, заключены в теги <a [...] ></a>. Если это не так, вам нужно регулярное выражение, соответствующее URL. Это гораздо сложнее, в зависимости от того, являются ли URL-адреса, используемые вашими авторами, интернационализированными / имеют разные домены, а не только http: // prefaced и т. Д.

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

(([A-Za-z]{3,9})://)?([-;:&=\+\$,\w]+@{1})?(([-A-Za-z0-9]+\.)+[A-Za-z]{2,3})(:\d+)?((/[-\+~%/\.\w]+)?/?([&?][-\+=&;%@\.\w]+)?(#[\w]+)?)?

Вы бы поместили это между '/ и /' в вышеуказанной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...