永久激活WordPress主题

时间:2015-03-06 作者:Rich

是否可以永久激活主题,以便无法禁用或更改?

类似于:

define( \'WP_DEFAULT_THEME\', \'apollo\' );

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这里有一个想法:

/**
 * Reactivate the sticky theme, if someone activates another theme.
 */

add_action( \'switch_theme\', \'wpse_permanent_theme\' );

function wpse_permanent_theme( $new_name )
{
    $sticky_theme_name = \'twentyfifteen\';  // Modify this to your needs!

    // Get the sticky theme info, to check if it exists (named):    
    $sticky_theme = wp_get_theme( $sticky_theme_name );

    // Reactivate the sticky theme:   
    if( $sticky_theme->get( \'Name\' ) && $sticky_theme_name !== $new_name )
    {
        remove_action( current_action(), __FUNCTION__ );
        switch_theme( $sticky_theme_name );
    }
}  
您必须根据需要修改粘性主题名称。您可能需要进一步测试。

另一个要尝试的方法是删除switch_themes 功能适用于所有用户!

例如,我们可以通过以下方式即时过滤掉此功能:

/**
 *  Remove the \'switch_themes\' capability for all users.
 */

add_filter(\'user_has_cap\', function( $allcaps )
{
    if( isset( $allcaps[\'switch_themes\']  ) )
        unset( $allcaps[\'switch_themes\'] );
    return $allcaps;
});
所以current_user_can( \'switch_themes\' ) 在中的主题激活期间进行检查themes.php 返回false。

结束

相关推荐

身份验证/登录机制(非wp-admin)

我正在制定一个主题。我需要有一个用户登录系统,允许用户在登录后查看应用程序的所有内容并与之交互(而不是管理面板登录)。我需要在开始时将所有流量重定向到登录。如果用户未登录,请使用php页面代替wordpress“主页”(page.php)。否则,降落在“家”中。在wordpress中不使用插件的正确方法是什么?