Как я могу получить доступ к массиву «: private» в объекте в PHP?

До тех пор, пока не было доступно около 3.3beta1 элементов в WP_Admin_Bar Object , используя это тип синтаксиса, например, для изменения класса CSS одного из существующих пунктов меню:

$wp_admin_bar->menu->{'wp-logo'}['meta']['class'] = 'new-class';

При запуске print_r ($ wp_admin_bar) вывод выглядел примерно так:

WP_Admin_Bar Object
(
    [menu] => stdClass Object
        (
            [my-account] => Array
                (

Однако около версии 3.3beta2 вышеупомянутый синтаксис для изменения класса CSS пункта меню больше не работает, а вывод из print_r ($ wp_admin_bar) показывает другую структуру для этого объекта:

WP_Admin_Bar Object
(
    [nodes:WP_Admin_Bar:private] => Array
        (
            [my-account] => stdClass Object
                (
                    [id] => my-account

                )

Я понимаю, что Wordpress не может хочу, чтобы я так возился с меню, и если бы существовал более стандартизированный способ сделать это, я бы с удовольствием его использовал, но, насколько мне известно, для изменения панели администратора доступны только две функции, add_menu_item и remove_menu_item , и они не дают гибкости для выполнения таких действий, как изменение атрибутов существующих пунктов меню.

Чтобы убедиться, я посмотрел на wp-includes / class-wp-admin-bar.php , очевидно, что Wordpress изменил способ определения переменных.

Старый класс

class WP_Admin_Bar {
    var $menu;
    var $proto = 'http://';
    var $user;

Новый класс

class WP_Admin_Bar {
    private $nodes = array();
    private $root = array();

    public $proto = 'http://';
    public $user;

Итак, мой вопрос: есть ли у меня доступ к глобальному объекту $ wp_admin_bar , могу ли я получить доступ к объектам внутри узлов : WP_Admin_Bar : частный ? А если нет, есть ли другой способ добраться до этих объектов, например, создать новый класс, расширяющий класс WP_Admin_Bar , а затем получить доступ к объектам оттуда?

ps: Я пытаюсь преодолеть эта задача без изменения основных файлов Wordpress ...

Ссылка на файл: http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-includes/class-wp-admin- bar.php.source.html

13
задан cwd 27 November 2011 в 16:11
поделиться