WordPress — Создать ссылку на отдельный авторский архив внутри блога

Мы разрабатываем блог в WordPress и столкнулись с некоторыми функциями, которые нам сложно реализовать.

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

"We recently spoke to our newest team member Pete Smith" или же "We recently spoke to our newest team member @PeteSmith"

Если бы вы нажали на имя Пита, вы бы website.com/authors/petesmith

Я знаю, что в WordPress есть функция упоминания, встроенная в раздел комментариев, но есть ли способ добиться этого в реальных постах блога?

Извините, что я не могу включить какой-либо код в этот вопрос, просто вам нечего показать, ребята.

1

Решение

Вы можете использовать что-то вроде этого внутри вашего functions.php:

add_filter('the_content', 'the_content_func');

function the_content_func($content) {
$ret = preg_replace_callback ( "/(@[A-Za-z]+)/",
function ($match) {
$authorName = mb_substr($match[0], 1);
$author = get_user_by('slug', $authorName);
if ( ! empty( $author ) )
return '<a href="' . get_author_posts_url( $author->ID, $author->user_nicename ) . '">' . $author->display_name . '</a>';
else
return $authorName;
},
$content);
return $ret;
}

Я предполагаю, что текст после символа @ является слагом автора, поэтому внутри фильтра я ищу указанного автора и, если он найден, выводит соответствующую ссылку на профиль автора с отображаемым именем. В противном случае я просто вывести строку без символа @ & URL.

Если я неправильно понял ваши цели, не стесняйтесь изменять внутреннюю функцию preg_replace_callback, сохраняя в середине, что $ match [0] содержит найденный слаг пользователя с символом @ из содержимого публикации.

1

Другие решения

Вот код для страницы архива автора

<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>"><?php the_author(); ?></a>
-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector