Intereting Posts
Может ли пользователь отображаться или скрываться в зависимости от состояния входа пользователя в систему? Хранение ответа XML (переходный режим)? Флажок не будет проверяться при нажатии метки настраиваемое поле всегда для .get_the_title ()? API настроек включает настройки по умолчанию для установки темы? Как показывать только родительские категории на боковой панели WordPress Plugin с коротким кодом, который динамически генерирует javascript. Могу ли я использовать add_action без упаковки javascript в функции? Содержимое Unautop / Sanitize добавлено в сообщение через плагин Основной вызов ajax в WordPress Таблица стилей страницы с плагином не работает Ограничить выбор изображенного изображения до высоты и ширины пикселей Как разместить тему страницы в специальном поле / div? Пользовательский тип почтового типа – поле заказа Как добавить новую вкладку в редактор страниц Всплывающее изображение из текста

Как вызвать wp_list_comments () с обратным вызовом вне цикла

функция шаблона в качестве аргумента обратного вызова функции wp_list_comments , а функция шаблона принимает три аргумента: $comment, $args, $depth , как функция шаблона, определенная в функции functions.php темы twentyeleven ,

 function twentyeleven_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; switch ( $comment->comment_type ) : case 'pingback' : case 'trackback' : ?> <li class="post pingback"> <p><?php _e( 'Pingback:', 'twentyeleven' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?></p> <?php /** and more ... **/ 

Я хочу вызвать эту функцию в другом месте, и у меня есть ссылка $comment для комментария, но я не знаю, как установить переменные $args и $depth . Я знаю, что значение $depth или $args может быть изменено в настройках администратора, поэтому я не могу просто установить $depth в 5 или любой номер.

Как я могу получить $args и $depth ???

Заранее спасибо.

Solutions Collecting From Web of "Как вызвать wp_list_comments () с обратным вызовом вне цикла"

Ну, у меня есть решение. сначала используйте глобальную переменную $ comment_depth, передайте ее функции twentyeleven_comment() , а в функции twentyeleven_comment() определите новую переменную с именем $defaults следующим образом:

 function twentyeleven_comment( $comment, $args, $depth ) { $defaults = array('walker' => null, 'max_depth' => '', 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all','page' => '', 'per_page' => '', 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => ''); $args = wp_parse_args($args,$defaults); /** something else **/ } 

В другой функции вызовите функцию twentyeleven_comment() следующим образом:

  add_action('comment_post','my_action',10,2); function my_action($comment_id,$comment_status){ $comment_g = &get_comment($comment_id); global $comment_depth; /** here get the $depth **/ twentyeleven_comment($comment_g,array(),$comment_depth); /** invoke the function in this way **/ /*** something else goes here ***/ } 

Я просто хочу вывести один комментарий с помощью $comment_ID .

спасибо тем парням, которые прокомментировали или ответили 🙂

Просто продолжайте и назовите его так же, как это делает tventyeleven:

 <?php /* Loop through and list the comments. Tell wp_list_comments() * to use twentyeleven_comment() to format the comments. * If you want to overload this in a child theme then you can * define twentyeleven_comment() and that will be used instead. * See twentyeleven_comment() in twentyeleven/functions.php for more. */ wp_list_comments( array( 'callback' => 'twentyeleven_comment' ) ); ?> 

Функция wp_list_comments будет управлять $ depth и другими $ args сама (в walker). См. Исходный код wp_list_comments и ходока с использованием callback arg