«
»
WordPressWP - PHPВсе для functions.phpВсе для разработки плагиновВсе для разработки шаблонов

Как изменить слаг авторов в WordPress (или как изменить ссылку автора на блоге)

Как изменить слаг авторов в WordPress (или как изменить ссылку автора на блоге)

Слаг Автора – это средняя часть URL автора, по умолчанию это https://домен.юа/author/attila/..

По какой – то причине, в отличии от категории или тегов, WordPress не дает нам возможность изменить его Settings Permalinks Screen( Настройки > Permalinks администратора страницы), поэтому нам нужно найти альтернативный путь.

В этой статье я покажу вам два возможных подхода к изменению слага Автора программно. В первом фрагменте мы определим новую базу в нашем исходном коде. Затем, для большей гибкости, мы будем выполнять модификацию динамически через поле ввода на странице Постоянные ссылки.

Переписать URL

Когда дело доходит до изменения слага авторов, мы должны изменить $wp_rewriteглобальную переменную. Это единственный экземпляр,WP_Rewrite class который WordPress использует для управления правилами перезаписи URL. Благодаря этому наш сайт на WordPress имеет SEO-ориентированные Pretty Permalinks.

Код № 1 – Кодирование Авторской Базы

/** * Custom Author Base * * @return void */ function lwp_2610_custom_author_base() { global $wp_rewrite; $wp_rewrite->author_base = 'user'; } add_action( 'init', 'lwp_2610_custom_author_base' );

В приведенном выше коде, мы просто присвоим строку к author_baseсвойству $wp_rewriteобъекта, например, «пользователь» или «профиль». Помните, что это часть URL – адреса, поэтому не используйте никаких специальных символов или пробелов.

Давайте посмотрим, что произойдет после применения кода, и попробуем найти наш новый URL-адрес автора. Мы получим ошибку «Страница не найдена». Чтобы сделать это изменение постоянным, мы должны перестроить структуру постоянных ссылок. Перейдите к Permalinks экрана администратора и нажмите Сохранить.

Примечание. Мы также можем программно перестроить структуру постоянных ссылок, вызвав  функцию. Это очень дорогая операция, поэтому обязательно шлите запрос только один раз.flush_rewrite_rules()

Как показано, этот метод состоит из 2 этапов: создание самого кода и перестройка структуры постоянной ссылки. Не было бы удобнее выполнять это только на странице администратора? Все в порядке. Давайте расширим наш код.

Код № 2 – динамическое изменение слага авторов

Следующий фрагмент позволяет пользователям самим изменять слагавторов через поле ввода на экране администратора Permalinks. Это более удобный способ модификации.

/** * Rewrite author base to custom * * @return void */ function lwp_2610_author_base_rewrite() { global $wp_rewrite; $author_base_db = get_option( 'lwp_author_base' ); if ( !empty( $author_base_db ) ) { $wp_rewrite->author_base = $author_base_db; } } add_action( 'init', 'lwp_2610_author_base_rewrite' ); /** * Render textinput for Author base * Callback for the add_settings_function() * * @return void */ function lwp_2610_author_base_render_field() { global $wp_rewrite; printf( '<input name="lwp_author_base" id="lwp_author_base" type="text" value="%s" class="regular-text code">', esc_attr( $wp_rewrite->author_base ) ); } /** * Add a setting field for Author Base to the "Optional" Section * of the Permalinks Page * * @return void */ function lwp_2610_author_base_add_settings_field() { add_settings_field( 'lwp_author_base', esc_html__( 'Author base' ), 'lwp_2610_author_base_render_field', 'permalink', 'optional', array( 'label_for' => 'lwp_uthor_base' ) ); } add_action( 'admin_init', 'lwp_2610_author_base_add_settings_field' ); /** * Sanitize and save the given Author Base value to the database * * @return void */ function lwp_2610_author_base_update() { $author_base_db = get_option( 'lwp_author_base' ); if ( isset( $_POST['lwp_author_base'] ) && isset( $_POST['permalink_structure'] ) && check_admin_referer( 'update-permalink' ) ) { $author_base = sanitize_title( $_POST['lwp_author_base'] ); if ( empty( $author_base ) ) { add_settings_error( 'lwp_author_base', 'lwp_author_base', esc_html__( 'Invalid Author Base.' ), 'error' ); } elseif ( $author_base_db != $author_base ) { update_option( 'lwp_author_base', $author_base ); } } } add_action( 'admin_init', 'lwp_2610_author_base_update' );

В приведенном выше коде мы используем функцию для создания поля ввода. Функция (то есть зацепили к действию) обрабатывает обновления. Обычно за это отвечает функция API, но она не работает на странице Постоянные ссылки. Она отлично выполняет свою работу на других страницах настроек, таких как Общие или Чтение, но не здесь. Наша пользовательская функция – это решение проблемы. Она делает все, что должна делать функция, включая обработку ошибок, очистку и сохранение данных в таблице базы данных опций. Как и в первом подходе, суть кода заключается в измененииadd_settings_field()Settings APIlwp_2610_author_base_update()``admin_initregister_setting()register_settings()  $wp_rewriteглобальный объект. Но на этот раз изменение слага автора исходит из базы данных.

После применения фрагмента в нижней части раздела « Параметры » на странице «Постоянные ссылки» появляется новый текстовый ввод.

Ввод профиля

Источник записи: https://letswp.io

Связанные записи
WordPressВсе для functions.phpВсе для разработки плагиновПлагиныШорткоды

Как добавить Автоматическое оглавление в WordPress

WordPressЗащита от вирусовПлагины

Как очистить взломанный сайт WordPress с помощью плагина Wordfence

WordPressWordPress - АдминкаВсе для wp-config.php

Что такое электронные ключи в WordPress? Как использовать и генерировать электронные ключи для wp-config.php

WordPressЗащита от вирусовПлагины

Взломанные сайты WordPress защищаются злоумышленниками (Мнение специалиста WordFence | Взлом плагина File Manager )