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

时间:2010-04-01 19:44:38

标签: php wordpress

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

1 个答案:

答案 0 :(得分:0)

您不需要单独添加代码块来添加.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来缩短条件。