답변:
set_permalink_structure()
글로벌 $wp_rewrite
객체 의 메소드를 호출하여 퍼머 링크 구조를 설정할 수 있습니다 .
add_action( 'init', function() {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
} );
오류가 발생하는 경우를 대비하여 PHP <5.3 버전의 코드가 있습니다.
function reset_permalinks() {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%postname%/' );
}
add_action( 'init', 'reset_permalinks' );
$wp_rewrite->flush_rules();
하면 문제가 해결됩니다. init에서 사용하고 매번 실행하는 나쁜 습관입니다. 퍼머 링크 페이지를 방문하면 트릭을 수행 할 수 있습니다.
이전 답변이 작동하지 않습니다. 나는 순수한 해결책을 얻었다. 이 코드 사용을 사용할 수 있습니다. 100 % 작동합니다. 감사
/**
* Rewrite set up, when theme activate i mean
*/
if (isset($_GET['activated']) && is_admin()) {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%/');
$wp_rewrite->flush_rules();
}
/**
* Redirect to Permalink setting Page.
* Otherwise Redirect rule will not work Properly.
*/
function redirect_to_permalink() {
wp_redirect('options-permalink.php');
}
add_action( 'after_switch_theme', 'redirect_to_permalink' );
function setPermaLink(){
$ps = '/%category%/%postname%/';
$permalink_structure = sanitize_option( 'permalink_structure', $ps);
$blog_prefix = '/blog';
$prefix = '/index.php';
if ( ! empty( $permalink_structure ) ) {
$permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) );
if ( $prefix && $blog_prefix ) {
$permalink_structure = $prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure );
} else {
$permalink_structure = $blog_prefix . $permalink_structure;
}
}
$wp_rewrite->set_permalink_structure( $permalink_structure );
flush_rewrite_rules();
}
setPermaLink();