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

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

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

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

Чтобы полностью включить постоянные ссылки, вам также необходимо убедиться, что .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>