Как добавить HTML-тег и класс внутри тега ссылки в посте - Wordpress - PullRequest
0 голосов
/ 25 мая 2019

Я хотел бы добавить классы и тег html внутри тега ссылки Post, чтобы я связал слово с одной из моих страниц WordPress, которая выглядит следующим образом:

<a href="http://localhost/website/contact/">contact</a>

, и я хочу, когда ясвязать его так:

<a href="http://localhost/website/contact/" class="class1 class2"><span>contact</span></a>

, потому что моя тема использует span для выполнения функции наведения.

, если это возможно только в Посте (часть блога), есть класс, который всеВ сообщениях есть: post-contents

Я знаю, что могу изменить в HTML-коде своего сообщения, но я хочу, чтобы он был универсальным, чтобы как только я добавлял ссылку в класс сообщения (даже нового)и тег span добавлены

Есть мысли?

1 Ответ

0 голосов
/ 25 мая 2019

Это должно сработать;

function wrap_anchor_text_with_span( $content ) {
        if ( ! is_admin() && preg_match( '~<a(.*?)>(.*?)</a>~', $content ) ) {
            $content = preg_replace_callback( '~<a(.*?)>(.*?)</a>~', '_add_span', $content );
    }
    return $content;
}
add_filter('the_content', 'wrap_anchor_text_with_span', 10);

function _add_span( $matches ) {
    if ( ! ( $title = strip_tags( $matches[2] ) ) ) { // If we only have an image inside the anchor
        return '<a' . $matches[1] . '>' . $matches[2] . '</a>';
    } else {
        return '<a' . $matches[1] . '><span data-title="' . esc_attr( $title ) . '">' . $matches[2] . '</span></a>';
    }
}

Эта функция делает то, что она подключается к фильтру the_content и помещает диапазон во все теги привязки.

Обратите внимание, что если якорь содержит изображение, диапазон не будет добавлен. Согласно другому ответу из другой ветки Никола Иванов Николов

Тогда используйте фильтр для обработки якорей ...

add_filter('the_content', 'addClassToLinks');
function addClassToLinks($content){
    return str_replace( '<a ', "<a class='myclass'", $content);
}

Надеюсь, это поможет.

С уважением, -B.

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