Доступ к аргументу функции в другой функции? - PullRequest
0 голосов
/ 02 марта 2011

У меня есть эта функция:

<?php myWidget() { ?>

         <div id="<?php echo $args['widget_id']; ?>">
              <p>Something</p>
         </div>

    <?php } ?>

(widget_id - основная функция Wordpress, поэтому у меня нет прямого доступа к ней, просто генерируется имя виджета)

Я хотел добавить свой виджет в качестве шорткода, поэтому мне нужно было создать другую функцию:

function myWidget_shortcode( $atts ) {
        extract( shortcode_atts( array(
        /* attributes here */
        ), $atts ) );

        ob_start();    
        the_widget(myWidget);
        return ob_get_clean();
}    

the_widget просто вызывает виджет myWidget.

Дело в том, что все работает хорошо, но id = "" всегда пусто, когда я использую второй код.

Я знаю, что это вопрос Wordpress, но я считаю, что это больше связано с моим PHP-кодом.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 02 марта 2011

Я думаю, это проблема сферой.$args не внутри функции.Попробуйте передать его функции

0 голосов
/ 02 марта 2011

Судя по вашему последнему комментарию, проблема в том, что $ args не установлен, и, поскольку идентификатор установлен из $ args, он будет "".

Вы должны выяснить, где установлен $ args, и либо убедиться, что часть выполняется, либо установить ее самостоятельно.

В этом случае $ args - это не аргументы метода myWidget, а глобальный массив.

Проверьте, существует ли он вообще

isset($args)
...