使用/wp-admin/admin.php后,WordPress会注销

时间:2014-05-12 16:07:38

标签: wordpress wordpress-theming

我目前正在使用新功能更新系统。我添加了show_user_profileedit_user_profile操作,将自定义数据添加到用户视图中:

<script type="text/javascript">
    function bindRemoveButton() {
        jQuery(function($) {
            $('table.available-users button.remove').on('click', function() {
                $(this).parent().parent().remove();
            });
        });
    }

    bindRemoveButton();
</script>
<table class="form-table available-users">
    <tbody>
        <tr>
            <th>
                <label for="accounts"><?php print __('Assigned accounts', ZVA_I18N); ?></label>
                <br />
                <br />
                <a href="<?php bloginfo('template_directory'); ?>/templates/admin/user_add_box.php#TB_iframe=true&width=600&height=550" title="<?php print __('Add User', ZVA_I18N); ?>" class="thickbox button button-primary"><?php print __('Add', ZVA_I18N); ?></button>
            </th>
            <td>
                <table class="wp-list-table widefat fixed users">
                    <thead>
                        <tr>
                            <th scope="col" class="manage-colum" style="padding-left: 20px;"><span><?php print __('Username', ZVA_I18N); ?></span></th>
                            <th scope="col" class="manage-colum"><span><?php print __('Date From', ZVA_I18N); ?></span></th>
                            <th scope="col" class="manage-colum"><span><?php print __('Date To', ZVA_I18N); ?></span></th>
                            <th scope="col" class="manage-colum"><span><?php print __('Action', ZVA_I18N); ?></span></th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                            foreach($user_available AS $aindex => $available_user) {
                                $user = new WP_User($available_user['user_id']);
                                ?>
                                    <tr>
                                        <td><?php print $user->user_login; ?> (<?php print $user->display_name; ?>)</td>
                                        <td>
                                            <input type="text" name="jumper_day_from[<?php print $user->ID; ?>]" size="2" value="<?php print date('d', $available_user['from']); ?>" placeholder="DD" />.
                                            <input type="text" name="jumper_month_from[<?php print $user->ID; ?>]" size="2" value="<?php print date('m', $available_user['from']); ?>" placeholder="MM" />.
                                            <input type="text" name="jumper_year_from[<?php print $user->ID; ?>]" size="4" value="<?php print date('Y', $available_user['from']); ?>" placeholder="YYYY" /> 
                                        </td>
                                        <td>
                                            <input type="text" name="jumper_day_to[<?php print $user->ID; ?>]" size="2" value="<?php print date('d', $available_user['to']); ?>" placeholder="DD" />.
                                            <input type="text" name="jumper_month_to[<?php print $user->ID; ?>]" size="2" value="<?php print date('m', $available_user['to']); ?>" placeholder="MM" />.
                                            <input type="text" name="jumper_year_to[<?php print $user->ID; ?>]" size="4" value="<?php print date('Y', $available_user['to']); ?>" placeholder="YYYY" />
                                        </td>
                                        <td>
                                            <button type="button" class="remove button button-primary"><?php print __('Remove', ZVA_I18N); ?></button>
                                        </td>
                                    </tr>
                                <?php
                            }
                        ?>
                    </tbody>
                </table>
            </td>
        </tr>
    </tbody>
</table>

好的,没问题。请参阅我的代码中的第19行,此处我添加了一个链接/按钮以打开包含其他内容的新Thickbox。当我点击链接时,会弹出一个厚盒并显示文件/wp-content/themes/MyTheme/templates/admin/user_add_box.php中的内容。

要使用WordPress自己的功能(例如$wpdb或其他功能),我可以admin.php添加user_add_box.php - 是,目前只有这些行在文件上:

<?php
    define('WP_ADMIN', true);

    /* Nativate to /wp-admin/ directory */
    require_once(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/wp-admin/admin.php');
?>

当我打开复选框时,会显示登录 - 好奇。之后,我完全从WordPress退出。

我用WordPress工作很长时间,从来没有遇到过这样的问题。特别是因为我也开发了多年的WordPress主题和插件。

你能告诉我,我做错了什么吗?为什么系统会将我记录下来?

感谢您的帮助。

修改

看到核心文件后,我看到我必须定义define('WP_ADMIN', true);之类的常量,但那不能解决问题。

1 个答案:

答案 0 :(得分:0)

auth_redirect方法(wp-includes/pluggable.php)中,将检查文件是否来自wp-admin目录:

 if ( $secure && !is_ssl() && false !== strpos($_SERVER['REQUEST_URI'], 'wp-admin') ) 

如果没有,系统将自动重定向到wp-login.php

解决它以重写$_SERVER['REQUEST_URI']变量:

<?php
    $_SERVER['REQUEST_URI'] = 'wp-admin';
    require_once(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/wp-admin/admin.php');
?>

否则,只添加wp-load.phpwp-admin/includes/admin.php

<?php
    $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_REFERER'];
    require_once(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/wp-load.php');
    require_once(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/wp-admin/includes/admin.php');
?>