使用/wp-admin/admin.php后,WordPress会退出



我正在用一个新功能更新一个系统。我正在添加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或其他),我在user_add_box.php上包括admin.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开发了多年的主题和插件。

你能告诉我,我做错了什么吗?为什么系统会让我退出?

谢谢你的帮助。

编辑

查看core文件后,我发现我必须定义像define('WP_ADMIN', true);这样的常量,但这并不能解决问题

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');
?>

最新更新