自定义固定链接切换功能。请检查这个逻辑

问题描述:

我在我的主题选项面板中有一个设置,允许用户切换永久链接设置以支持友好的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'); 
} 

您不需要分开代码块来添加.html。你可以做一些事情:

$myThemePermalinks = get_option('myTheme_permalinks'); 
if (($myThemePermalinks =="/%postname%/" && get_option('permalink_structure') !== "/%postname%/" || !$myThemePermalinks) || ($myThemePermalinks == "/%postname%.html" && get_option('permalink_structure') !== "/%postname%.html")) { 

    if (preg_match('/\.html$/', $myThemePermalinks)) { 
     $ext = '.html'; 
    } else { 
     $ext = ''; 
    } 

    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%/'.$ext); 
    etc..// . 
} 

你不必使用正则表达式,如果你不想,但你明白了。你甚至可以通过使用正则表达式来检查选项.html来缩短条件。