Intereting Posts
WP JSON REST API (Ryan McCue), как запрашивать сообщения с конкретными метаданными с отношением «И»? WordPress не добавляет файл media.css Как создать учетные записи пользователей из пользовательских сообщений, имеющих адреса электронной почты Создайте дочернюю тему после того, Показать последние сообщения из той же категории, что и текущая публикация в боковой панели Как отключить модули Jetpack, такие как статистика? использовать многозначное значение в мета-ключевом запросе Контактная форма 7 Многоязычная подача с использованием полиланга Как фильтровать «post_gallery» после всех других фильтров / плагинов и т. Д. многостраничные блоки контента WordPress Получите все пользовательские типы сообщений, за исключением некоторых … удалить встроенные скрипты из the_content (), созданного плагинами? Разбивка страниц – публикация содержимого первой страницы Плагин генерирует неожиданный вывод – при вводе mysql dump import Постоянная ссылка страницы привязки – $ post не сбрасывается?

Вывод массива значений meta term на пользовательской вкладке WooCommerce?

Простите меня – мои навыки WordPress / PHP смешно рудиментарны, поэтому я не могу использовать правильную терминологию.

Я добавил пользовательскую вкладку на страницу одного продукта WooCommerce и вам нужно отобразить число (иногда однократное, иногда несколько) терминов meta, относящихся к пользовательской таксономии, «автор книги». Эти значения создаются в редакторе WYSIWYG и содержат форматирование HTML. У каждого «автора-автора» есть биография автора (термин мета-wpcf-автор-биография), и каждый продукт WooCommerce имеет один или несколько «авторов книг», приписываемых ему.

Это код, который я использую сейчас:

// Add author bio tab add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' ); function woo_new_product_tab( $tabs ) { // Adds the new tab $tabs['author_tab'] = array( 'title' => __( 'About the author', 'woocommerce' ), 'priority' => 50, 'callback' => 'woo_new_product_tab_content' ); return $tabs; } // Add the content function woo_new_product_tab_content() { $terms = get_the_terms(get_the_ID(), 'book-author' ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){ foreach ( $terms as $term ) { $all_term_meta = get_term_meta($term->term_id, 'wpcf-author-biography', false); print_r($all_term_meta); } } } 

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

 <div class="woocommerce-Tabs-panel woocommerce-Tabs-panel--author_tab panel entry-content wc-tab" id="tab-author_tab" role="tabpanel" aria- labelledby="tab-title-author_tab" style="display: block;"> Array ( [0] =&gt; XX staff writer&nbsp;<strong>John Doe</strong>&nbsp;has covered everything from men's&nbsp;style and grooming to food, drinks and travel. John has also interviewed&nbsp;some of the biggest names in film, television and music. ) Array ( [0] =&gt; <div class="woocommerce-tabs wc-tabs-wrapper"> <div id="tab-test_tab" class="woocommerce-Tabs-panel woocommerce-Tabs-panel-- test_tab panel entry-content wc-tab" style="display: none;"> <strong>Jane Doe&nbsp;</strong>is an author and university lecturer&nbsp;in underwater basket-weaving. She has recently completed a PhD. </div> </div> ) </div> 

Хотя сама вкладка создается без каких-либо проблем, как вы можете видеть, я получаю отображение некоторых изгоев, а также некоторых других guff, а второе значение meta по какой-то причине застревает в своей собственной скрытой оболочке вкладки, когда он должен появиться на той же вкладке.

Очевидно, что я не буду этого делать правильно, иначе меня здесь не было бы, поэтому любая помощь или толчок в правильном направлении были бы весьма признательны.

Кроме того, если есть какой-либо способ реализовать условие, чтобы, если у автора нет «автора книги», нет вкладки «Об авторе», это было бы наиболее полезно …

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

Изменить. Основываясь на рекомендации, предоставленном WebElaine, я попытался использовать foreach вместо print_r :

 function woo_new_product_tab_content() { $terms = get_the_terms(get_the_ID(), 'book-author' ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){ foreach ( $terms as $term ) { $all_term_meta = get_term_meta($term->term_id, 'wpcf-author-biography', false); foreach($all_term_meta as $meta) { echo $meta[0]; //tried with return as well with no success } } } } 

Это дает следующие результаты:

 <div class="woocommerce-Tabs-panel woocommerce-Tabs-panel--author_tab panel entry-content wc-tab" id="tab-author_tab" role="tabpanel" aria- labelledby="tab-title-author_tab" style="display: block;"> G&lt; </div> 

Если я удалю [0] после $meta , нам удастся избавиться от уродливых символов и блуждающего Array , но у меня все еще есть проблема с потерей информации моего второго автора:

 <div class="woocommerce-Tabs-panel woocommerce-Tabs-panel--author_tab panel entry-content wc-tab" id="tab-author_tab" role="tabpanel" aria- labelledby="tab-title-author_tab" style="display: block;"> XX staff writer&nbsp;<strong>John Doe</strong>&nbsp;has covered everything from men's&nbsp;style and grooming to food, drinks and travel. John has also interviewed&nbsp;some of the biggest names in film, television and music. <div class="woocommerce-tabs wc-tabs-wrapper"> <div id="tab-test_tab" class="woocommerce-Tabs-panel woocommerce-Tabs-panel-- test_tab panel entry-content wc-tab" style="display: none;"> <strong>Jane Doe&nbsp;</strong>is an author and university lecturer&nbsp;in underwater basket-weaving. She has recently completed a PhD. </div> </div> </div> 

Для отображения вашего автора контента вместо print_r($all_term_meta); попробуйте foreach :

 foreach($all_term_meta as $meta) { return $meta[0]; } 

Возможно, вам может понадобиться использовать «echo» вместо «return», но сначала попробуйте «вернуться».

Чтобы контролировать, есть ли вкладка автора, обновите свою функцию woo_new_product_tab с тем же условием:

 function woo_new_product_tab( $tabs ) { $terms = get_the_terms(get_the_ID(), 'book-author' ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){ // Adds the new tab $tabs['author_tab'] = array( 'title' => __( 'About the author', 'woocommerce' ), 'priority' => 50, 'callback' => 'woo_new_product_tab_content' ); } return $tabs; } 

Благодаря WebElaine мне удалось найти решение, которое касалось проблемы с скрытой вкладкой:

 function woo_new_product_tab_content() { $terms = get_the_terms(get_the_ID(), 'book-author' ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){ foreach ( $terms as $term ) { $all_term_meta = get_term_meta($term->term_id, 'wpcf-author- biography', false); foreach($all_term_meta as $meta) { echo '<p>' . strip_tags($meta, '<strong><p><br>') . '</p>'; } } } } 

Это выводит следующие удовлетворяющие HTML:

 <div class="woocommerce-Tabs-panel woocommerce-Tabs-panel--author_tab panel entry-content wc-tab" id="tab-author_tab" role="tabpanel" aria- labelledby="tab-title-author_tab" style="display: block;"> <p>XX staff writer&nbsp;<strong>John Doe</strong>&nbsp;has covered everything from men's&nbsp;style and grooming to food, drinks and travel. John has also interviewed&nbsp;some of the biggest names in film, television and music.</p> <p><strong>Jane Doe&nbsp;</strong>is an author and university lecturer&nbsp;in underwater basket-weaving. She has recently completed a PhD.</p> </div>