2010-04-01 2 views
0

사용자가 친숙한 URL을 지원하도록 퍼머 링크 설정을 전환 할 수 있도록 내 테마 옵션 패널에 설정이 있습니다. 나는 단지/% postname % /와 /%postname%.html을 옵션으로 허용하고 있습니다.사용자 정의 permalinks 전환 기능. 이 논리를 확인하십시오

누군가가 사이트의 페이지에 액세스하거나 테마 옵션을 볼 때마다 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'); 
} 

답변

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

생각하고 싶지는 않지만 정규식을 사용하지 않아도됩니다. regex를 사용하여 옵션 .html을 검사하여 조건부를 더 짧게 만들 수도 있습니다.

관련 문제