活动主题响应主题更改请求以提醒用户

时间:2012-02-07 作者:N2Mystic

我正在尝试拦截install themes例程,以提醒用户注意活动主题。我正在下面拼凑一个粗糙的javascript警报。还有什么其他选择?

if ( is_admin() && $pagenow == \'theme-install.php\' && $_GET[\'tab\']=="upload"){
?>
<script type="text/javascript">
    alert(\'Message here\');
</script>
<?php
}
这样做的原因是为了确保用户没有试图安装我的主题的升级程序。将文件zip升级为主题(这会导致主题中断)。

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

我通常喜欢在服务器端做这种工作,因为用现代调试工具在客户端绕过JavaScript太容易了,但这是一个独特的问题,可能适合您的用例(取决于您的受众)。

使用纯JavaScript,您可以执行以下操作:

在主题目录的根目录中创建一个JavaScript文件,并将其命名为“upload.js”

  • 向其中添加以下代码(请务必阅读注释):

    (function($) {
        $(function() {
    
        // Check to verify that we\'re on the "Install Themes" page
        var $upload = $(\'#install-theme-submit\');
        if($upload.length > 0) {
    
            // Watch for the user to click on the upload button
            $upload.click(function(evt) {
    
                // When they do, get the name of the file they\'ve uploaded
                var sFilePath = $(\'input[type=file]\').val();
                var aFilePath = sFilePath.split(\'\\\\\');
                sFilePath = aFilePath[aFilePath.length - 1];
    
                // If it\'s equal to updated, let them know:
                if(sFilePath.toLowerCase() === \'upgrader.zip\') {
    
                    // Create a WordPress-style notification and add it to the screen
                    $(\'h4\').before(
                        $(\'<div />\')
                            .append(
                                $(\'<p />\')
                                    .text("Do not upload this file.")
                            ).attr(\'class\', \'updated\')
                    );
    
                    // Stop the upload
                    evt.preventDefault();
    
                } // end if
    
            });
    
        } // end if
    
    });
    })(jQuery);
    
    将以下内容添加到主题的功能中。php。这将把脚本加载到主题中:

    function custom_upload_script() {
    
        wp_register_script(\'admin-upload-script\', get_template_directory_uri() . \'/upload.js\');
        wp_enqueue_script(\'admin-upload-script\');
    
    } // end custom_upload_script
    add_action(\'admin_enqueue_scripts\', \'custom_upload_script\');
    
    如果您想纯服务器端,那么no hook 用于管理主题激活操作;但是,您可以利用switch_theme 行动这纯粹是推测,但一旦动作触发,您就可以从文件中读取一些信息,然后恢复到以前使用的主题。

  • SO网友:kaiser

    迟交的答复

    核心中有两个(几乎未知)挂钩:

    主题激活挂钩:\'after_switch_theme\'

    主题停用挂钩:\'switch_theme\'

    结束

    相关推荐