Özel permalinks anahtarlama işlevi.

1 Cevap php

Ben kullanıcı dostu URL'ler destek ayarı kalıcı bağlantı geçmek için izin vermek benim tema seçenekleri panelinde bir ayarı var. Ben sadece izin veriyorum /% postname% / ve /% postname%. Html seçenekleri gibi.

Birisi site veya görünümleri tema seçenekleri bir sayfa erişen her bir htaccess rewrite tetikleyici olmak istemiyorum, bu yüzden bunu önlemek için bu kod çalışıyorum.

Ben $ myTheme_permalinks denir tema seçenekleri bir giriş alanı var. Bunun için varsayılan değer "/% postname% /" ama kullanıcı da bunu değiştirebilirsiniz "/% postname%. Html"

İşte bu ayarı işlemek için tema seçenekleri üstündeki kod. Bu sesi görünüyor mu?

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 Cevap

Sen sadece. Html eklemek için kod bloklarını ayırmak gerekmez. Sen çizgisinde bir şey yapabilirsiniz:

$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..// .
}

Eğer istemiyorsanız eğer regex kullanmak zorunda değilsiniz ama size fikir olsun. Hatta bir seçenek kontrol etmek için regex kullanarak koşullu kısa yapabiliriz. Html.