На панели параметров моей темы есть настройка, позволяющая пользователю переключать настройку постоянных ссылок для поддержки дружественных URL-адресов. Я только разрешаю /% postname% / и /%postname%.html в качестве параметров.
Я не хочу запускать переписывание htaccess каждый раз, когда кто-то заходит на страницу на сайте или просматривает параметры темы, поэтому я пытаюсь написать код, чтобы избежать этого.
У меня есть поле ввода в опциях темы, которое называется $ myTheme_permalinks. Значением по умолчанию для этого является "/% postname% /", но пользователь также может изменить его на "/%postname%.html"
Вот код в верхней части параметров темы для обработки этого параметра. Звучит ли это звучит?
if(get_option('myTheme_permalinks') =="/%postname%/" && get_option('permalink_structure') !== "/%postname%/" || !get_option('myTheme_permalinks'))
{
require_once(ABSPATH . '/wp-admin/includes/misc.php');
require_once(ABSPATH . '/wp-admin/includes/file.php');
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%/');
$wp_rewrite->flush_rules();
update_option('permalink_structure','/%postname%/');
update_option('myTheme_permalinks','/%postname%/');
}
else if (get_option('myTheme_permalinks') =="/%postname%.html" && get_option('permalink_structure') !== "/%postname%.html")
{
require_once(ABSPATH . '/wp-admin/includes/misc.php');
require_once(ABSPATH . '/wp-admin/includes/file.php');
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%.html');
$wp_rewrite->flush_rules();
update_option('permalink_structure','/%postname%.html');
}