0
<?php   
    class fppopupcontent {

        function __construct() {
            require_once('inc/init.php');

            if(isset($_POST['reset'])) {
                add_action('admin_init',array($this,'fppopupcontentreset'));
            }
        }

        function fppopupcontentadmin() {
            add_submenu_page('options-general.php','Fantastic Popup Content', 'Fantastic Popup Content', 'manage_options','fppopupcontentadmin', 'fppopupcontentadmin_menu');
        }

        function fppopupcontentupdate() {
            register_setting('fppopup','fppopupcontent');
            register_setting('fppopup','fppopuptitle');
            register_setting('fppopup','fppopupdays');
        }

        function fppopupcontentregister() {
            add_option('fppopupdays',0);    
        }

        function fppopupcontentreset() {
            delete_option('fppopuptitle');
            delete_option('fppopupcontent');
            delete_option('fppopupdays');
            add_option('fppopupdays','0');
            fppopupcontent::fppopupcontentmail();
        }

        function fppopupcontentprocess() {
            $plugin_dir = plugin_dir_url(__FILE__);

            wp_enqueue_script('jquery');
            wp_register_style('fp_style', $plugin_dir . 'css/home.css');
            wp_enqueue_style('fp_style');
            wp_register_script('fpquery_cookie', $plugin_dir . 'js/cookies.js');
            wp_enqueue_script('fpquery_cookie');
        }

        function fppopupcntnt() {
            if(is_home()) {
                ?>
                    <div id="fppop">
                        <div id="fp-close"></div>
                        <div id="fppopcnt">
                            <div id="fpclose" style="position:fixed;margin-left:-7px;"></div>
                            <div style="margin-left:50px">
                                <h1 style="font-size:24px"><?php echo get_option('fppopuptitle');?></h1>
                                <hr />
                                <?php $options=get_option('fppopupcontent'); ?>
                                <?php echo $options['textarea'] ; ?>
                            </div>
                        </div>
                    </div>
                <?php
            }
        }

        function fppopupprcss() {
            ?>
                <script type="text/javascript">
                    jQuery(document)
                        .ready(function($){
                            if($.cookie('popup_user_login')!='yes'){
                                $('#fppop')
                                    .delay(100)
                                    .fadeIn('medium');
                                $('#fpclose, #fp-close')
                                    .click(function(){
                                        $('#fppop')
                                            .stop()
                                            .fadeOut('medium')
                                    })
                            }
                            $.cookie(
                                'popup_user_login',
                                'yes',
                                {
                                    path:'/',
                                    expires:<?php echo (get_option('fppopupdays')); ?>
                                }
                            )
                        });
                </script>
            <?php
        }
    }


    add_filter('wp_footer',array('fppopupcontent','fppopupcntnt'));
    add_filter('wp_head', array('fppopupcontent','fppopupprcss'));
    add_action('wp_enqueue_scripts',array('fppopupcontent','fppopupcontentprocess'));
    //add_action('wp_print_styles',array('fppopupcontent','fppopupcontentprocess'));
    add_action('admin_menu',array('fppopupcontent','fppopupcontentadmin'));
    add_action('admin_init',array('fppopupcontent','fppopupcontentupdate'));
    register_activation_hook(__FILE__,array('fppopupcontent','fppopupcontentregister'));
    $new = new fppopupcontent();
?>

我创建了一个示例弹出插件。

在上面的代码中,它在 localhost 中运行良好。但是当我在实时站点中使用它时,它不起作用。

如果我使用 FireBug 查看,代码就会出现,但 CSS 设置为display:none.

我尝试将 CSS 更改为display:block,然后它会显示,但是当我单击关闭按钮时它不会关闭。

我不知道我做错了什么。如果有人可以就如何做到这一点给我建议,那就太好了。

以下是我用于弹出窗口的 css:

#fppop {
    display: block;
    background:color: #666;
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 99999;
}

#fp-close {
    width: 100%;
    height: 100%
}

#fppopcnt {
    background: white;
    width: 600px;
    height: 400px;
    position: absolute;
    top: 220px;
    left: 630px;
    -webkit-box-shadow: inset 0 0 50px 0 #939393;
    -moz-box-shadow: inset 0 0 50px 0 #CCC;
    box-shadow: inset 0 0 50px 0 #CCC;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    margin: -135px 0 0 -210px;
    overflow: scroll;
}

#fpclose {
    float: left;
    cursor: pointer;
    background: url(../images/fanclose.png) repeat;
    height: 15px;
    padding: 20px;
    position: relative;
    padding-right: 40px;
    margin-top: -20px;
    margin-right: -22px;
}
4

1 回答 1

0

1一般

不同的 PHP 版本或环境设置可能会解释为什么您会得到不同的结果。例如,下面的错误可能会以不同的方式处理?

检查本地主机和实时服务器的 PHP 版本和 WP 版本。


2 你的显示问题

我不知道这是否相关,但您的代码中有以下错误:

  1. 课程结束后的额外}关闭(即在add_filter(...)靠近底部的行之前
  2. 没有开始<?php标签。

虽然 2 和 3 可能只是因为上面有代码,但您没有包括在内。

编辑:您现在已经通过外观清除了这些错误。


3 您的关闭按钮

编辑:抱歉,我上次忽略了包含此代码的硬编码脚本标签。

以下代码与您的关闭按钮相关联:

jQuery(document)
    .ready(function($){
        if(jQuery(document)
.ready(function($){
    if($.cookies('popup_user_login')!='yes'){
        $('#fppop')
            .delay(100)
            .fadeIn('medium');
        $('#fpclose, #fp-close')
            .click(function(){
                $('#fppop')
                    .stop()
                    .fadeOut('medium')
            })
    }
    $.cookies(
        'popup_user_login',
        'yes',
        {
            path:'/',
            expires:<?php echo (get_option('fppopupdays')); ?>
        }
    )
});){
            $('#fppop')
                .delay(100)
                .fadeIn('medium');
            $('#fpclose, #fp-close')
                .click(function(){
                    $('#fppop')
                        .stop()
                        .fadeOut('medium')
                })
        }
        $.cookies(
            'popup_user_login',
            'yes',
            {
                path:'/',
                expires:<?php echo (get_option('fppopupdays')); ?>
            }
        )
    });

因此fpclosefp-close除非$.cookies('popup_user_login')!='yes'.

您包括cookies.js在您的 WPenqueue_script()调用中......但您是否确认 a) 此引用包含在发出的 HTML 中?b) 该.cookies()方法实际上在您调用它的 HTML 中可用?c) 你引用的 cookie 确实存在?

于 2013-03-30T05:12:51.907 回答