Intereting Posts
Удалить сообщение Custom Meta Box Целесообразно использовать $ post-> comment_count вместо get_comments_number ($ post_id) Как найти, где текущее значение опции «регистрация» в базе данных SQL? Не удалось отправить форму с помощью admin post wordpress Добавить изображение перед записью Заголовок записи Почему последний фрагмент сообщения в блоге отображается вместо мета-описания? 'Примечание: ошибка неопределенного индекса на странице плагинов Замените атрибут_escape на esc_attr () Как перечислить персонализированные заголовки типа на основе их терминов таксономии Внутри вложенной петли Следующая / Предыдущая запись Навигация Как я могу предоставить доступ к моим разделам плагина в admin? Сделать одну страницу недоступной для поисковых роботов Пользовательское поле по умолчанию со счетчиком Скриншоты темы – сломанные изображения Получить список всех ссылок на странице?

Как я могу программно принудительно настраивать постоянные ссылки с помощью моей темы?

Я создаю специальную тему. Это очень специализированная тема, которая делает WordPress похожим на приложение, а не на систему или блог CMS. Например, в качестве примера используется система планирования стоматологических кабинетов (с возможностями CMS и виджетов).

Поскольку моя тема нуждается в хорошем использовании URL-адресов, мне действительно нужно, чтобы файл .htaccess был по умолчанию, который создается только тогда, когда кто-то устанавливает Permalinks в Custom (а затем вводит что-то вроде% postname%). Как я могу вызвать это в WordPress программным образом, чтобы создать это? Я имею в виду, что я мог бы, вероятно, перезаписать файл сам во время активации темы, но лучше было бы использовать для него WordPress API.

Чтобы полностью включить постоянные ссылки, вам также необходимо убедиться, что .htaccess также создан. Для этого вам нужно установить опцию и сбросить правила с помощью булева.

global $wp_rewrite; //Write the rule $wp_rewrite->set_permalink_structure('/%postname%/'); //Set the option update_option( "rewrite_rules", FALSE ); //Flush the rules and tell it to write htaccess $wp_rewrite->flush_rules( true ); 

Если вы используете это в плагине, он должен быть в крючке init , а не в load . Если он находится в load крюке, он $wp_rewrite ошибку, говорящую, что $wp_rewrite равно null.

Важно: у вас также должно быть условие, поэтому оно устанавливается только один раз. (Вы можете создать опцию и проверить, установлен ли она, если нет, тогда вы запустите этот код постоянной ссылки и установите этот параметр)

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

 function change_permalinks() { global $wp_rewrite; $wp_rewrite->set_permalink_structure('/%postname%/'); $wp_rewrite->flush_rules(); } add_action('init', 'change_permalinks'); 

Вам может не понадобиться действие, если вы придерживаетесь этого в коде функции активации темы.

Я также обнаружил, что это только немного сработало. Вам еще нужно щелкнуть страницу настроек Permalinks для этого файла .htaccess, который будет создан. Так что делать? Ну, я обнаружил, что могу использовать IFRAME, который загружает эту страницу автоматически для меня с панели параметров моей темы, а затем создаст этот файл .htaccess для меня.

 <iframe style="position:absolute;top:-5000px" src="<?= site_url() ?>/wp-admin/options-permalink.php"></iframe>