如何以编程方式强制自定义固定链接到我的主题?

时间:2011-12-13 作者:Volomike

我正在制作一个自定义主题。这是一个高度专业化的主题,使WordPress成为一个应用程序,而不是CMS系统或博客。例如,牙科办公室调度系统(具有CMS和小部件功能)就是一个例子。

因为我的主题需要漂亮的URL才能正常工作,所以我真正需要的是。htaccess文件是只有当有人将Permalinks设置为Custom(然后键入%postname%)时才会创建的默认文件。我如何在WordPress中以编程方式触发它,以便它创建这个?我的意思是,我可能会在主题激活期间覆盖文件,但更好的办法是使用WordPress API。

3 个回复
最合适的回答,由SO网友:Don Rhummy 整理而成

要完全启用永久链接,还需要确保。还创建了htaccess。为此,需要设置一个选项并用布尔值刷新规则。

global $wp_rewrite; 

//Write the rule
$wp_rewrite->set_permalink_structure(\'/%postname%/\'); 

//Set the option
update_option( "rewrite_rules", FALSE ); 

//Flush the rules and tell it to write htaccess
$wp_rewrite->flush_rules( true );
如果在插件中使用此选项,则需要在initnot 这个load 钩如果在load hook,它会抛出一个错误$wp_rewrite 为空。

Important: 您还应该有一个条件,以便只设置一次。(您可以创建一个选项并检查是否已设置,如果未设置,则运行此永久链接代码并设置该选项)

我通常还会检查它是否是管理端,如果是,则只运行它。

SO网友:Volomike

function change_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure(\'/%postname%/\');
    $wp_rewrite->flush_rules();
}
add_action(\'init\', \'change_permalinks\');
如果在主题激活功能代码中添加了动作挂钩,则可能不需要动作挂钩。

我还发现这只起到了很小的作用。您仍然需要单击Permalinks设置页面才能执行此操作。要创建的htaccess文件。那么,该怎么办?嗯,我发现我可以使用一个IFRAME从我的主题的选项面板中自动为我加载该页面,然后它会创建该页面。htaccess文件。

<iframe style="position:absolute;top:-5000px" src="<?= site_url() ?>/wp-admin/options-permalink.php"></iframe>

SO网友:Drew Baker

这就是我使用它的方式,只有在我的主题被激活时才会发生,并且只有在没有保存预先存在的设置的情况下才会发生(不要破坏在使用我的主题之前所做的事情)。

/*
 * Set permlinks on theme activate
 */
    function set_custom_permalinks() {
        $current_setting = get_option(\'permalink_structure\');

        // Abort if already saved to something else
        if($current_setting) {
            return
        }

        // Save permalinks to a custom setting, force create of rules file
        global $wp_rewrite;
        update_option("rewrite_rules", FALSE);
        $wp_rewrite->set_permalink_structure(\'/news/%postname%/\');
        $wp_rewrite->flush_rules(true);
    }
    add_action(\'after_switch_theme\', \'set_custom_permalinks\');
这样做的好处是,它只会在主题被激活时运行一次,而不是每次访问站点时加载WordPress。

结束

相关推荐

.htaccess和500错误,添加了额外的字符

我有一个奇怪的问题。每隔几天,我就会访问我的网站,发现一个“内部服务器错误”,或者500个错误。我走进了。htaccess网站的文件,并注意它已被更改。在文件末尾添加一个字符。修复和继续很容易,但它一直在发生。htaccess权限是644,错误日志中没有提到这一点,所以我不知道从哪里开始。有人知道发生了什么事,或者给我指一些关于这个问题的信息吗?以下是“更改的”htaccess代码:# BEGIN WordPress <IfModule mod_rewrite.c> Rewri