使用$ wp_rewrite的Wordpress set_permalink_structure('/%postname%/')

时间:2013-05-03 14:53:12

标签: php wordpress-theming

如何通过functions.php更改永久链接设置(在子主题中更改为Twetwelve)以使其激活并正常工作而无需手动执行任何操作?

我想这段代码应该可行 - 但它似乎没有...我猜我错过了什么。

if($run_when_theme_is_activated_and_user_wants_this_permalink_structure){
        global $wp_rewrite;
        $wp_rewrite->set_permalink_structure( '/%postname%/' );
        $wp_rewrite->flush_rules();
}

当我刚访问“永久链接设置”页面时... wp-admin / options-permalink.php然后确实“帖子名称”已经已经选择,现在测试它可以正常工作。所以我没有保存或任何东西,只需访问这个特定的页面。必须在解决方案中跳过必须手动访问永久链接设置的步骤。

2 个答案:

答案 0 :(得分:2)

这应该在主题被激活时运行,因此只需设置并刷新规则

add_action( 'after_setup_theme', 'reset_permalinks' );
function reset_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure('/%postname%/');
    $wp_rewrite->flush_rules();
}

答案 1 :(得分:1)

使用此代码。它将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' );