Intereting Posts
is_user_logged_in ничего не возвращает на пользовательской странице Сообщение Woocommerce «добавлено в корзину» на главной (домашней странице) Почему я не могу перетащить экземпляр класса в переменную из do_action hook? «SwitchEditors не определено» с помощью wp_editor () на вкладках пользовательского интерфейса jQuery ACF Загрузить изображение в интерфейсе с пользовательской формой скорость журнала протокола php Регистрация пользователя WordPress + bbPress – недружественная? Страница пользовательской категории Woocommerce с разбивкой на страницы Должен ли я использовать add_filter для функций в function.php темы? плагин для организации данных Показать одну категорию на почте использование фильтров для функции из класса register_sidebar 'after_widget' в пользовательских виджетах, не реализующих, вызвал вложенные виджеты Применять template_include для работы, когда allow_url_include отключен? Перенаправить пользователя, если он не зарегистрирован

Добавление имени терминов из пользовательской таксономии, назначенной почтовой ссылке, отображаемой контуром wp_query на основе другой таксономии

Я зарегистрировал индивидуальный тип сообщения «Животные», а также две пользовательские таксономии («Позвоночные» и «Тип»), которые имеют свои собственные конкретные термины, для «Позвоночных» это будут «Млекопитающие» и «Рептилии», и для «Тип» это будут «тип воды» и «тип земли».

Используя page.php, я хотел бы отобразить список всех пользовательских сообщений (Животные), которые сортируются по терминам, которые назначены пользовательской таксономии «Позвоночные», в этом мне удастся использовать приведенный ниже код:

<?php $post_type = 'animals'; $tax = 'vertebrate'; $tax_terms = get_terms($tax); if ($tax_terms) { foreach ($tax_terms as $tax_term) { $args=array( 'post_type' => $post_type, "$tax" => $tax_term->slug, 'post_status' => 'publish', 'posts_per_page' => -1, 'caller_get_posts'=> 1, 'orderby' => 'title', 'order' => 'ASC' ); $my_query = null; $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo '<h2>'. $tax_term->name .'</h2>'; while ($my_query->have_posts()) : $my_query->the_post(); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php endwhile; } wp_reset_query(); } } ?> 

Это дает мне что-то вроде этого:

Млекопитающие:

  • корова
  • Собака
  • дельфин
  • Orca
  • Whale

Рептилии:

  • ящерица
  • Морская черепаха

Однако я хотел бы также показать в предыдущем списке, к каким терминам таксономии «Тип» каждый пост присваивается (помимо терминов из таксономии позвоночных), просто возвращая их имя после ссылки на сообщение.

Я пытаюсь добиться чего-то вроде этого:

Млекопитающие:

  • Корова (тип земли)
  • Собака (тип земли)
  • Дельфин (тип воды)
  • Орка (тип воды)
  • Кит (тип воды)

Рептилии:

  • Ящерица (тип земли)
  • Морская черепаха (тип воды)

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

ОБНОВИТЬ


Мой друг помог мне с этим. Он должен работать с этим:

  <?php $post_type = 'animals'; $tax = 'vertebrate'; $tax_terms = get_terms($tax); if ($tax_terms) { foreach ($tax_terms as $tax_term) { $args=array( 'post_type' => $post_type, "$tax" => $tax_term->slug, 'post_status' => 'publish', 'posts_per_page' => -1, 'caller_get_posts'=> 1, 'orderby' => 'title', 'order' => 'ASC' ); $my_query = null; $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo '<h2>'. $tax_term->name .'</h2>'; while ($my_query->have_posts()) : $my_query->the_post(); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> <?php setup_postdata( $post ); $terms = wp_get_post_terms( $post->ID, 'type'); echo '<span>'. ($terms[0]->name) .'</span></p>'; ?> <?php endwhile; } wp_reset_query(); } } ?> 

Solutions Collecting From Web of "Добавление имени терминов из пользовательской таксономии, назначенной почтовой ссылке, отображаемой контуром wp_query на основе другой таксономии"

Что-то вроде этого должно помочь:

 <?php $post_type = 'animals'; $tax = 'vertebrate'; $tax_terms = get_terms($tax); if ( $tax_terms ) { foreach ($tax_terms as $tax_term) { $args = array( 'post_type' => $post_type, "$tax" => $tax_term->slug, 'post_status' => 'publish', 'posts_per_page' => -1, 'caller_get_posts' => 1, 'orderby' => 'title', 'order' => 'ASC' ); // $my_query = null; <- REMOVE THIS, YOU DON'T NEED TO NULL VARIABLE BEFORE ASSIGNING IT'S VALUE $my_query = new WP_Query($args); ?> <?php if ( $my_query->have_posts() ) : ?> <h2><?php echo esc_html($tax_term->name); ?></h2>'; <?php // <- YOU SHOULD ESCAPE PRINTED VALUES ?> <ol> <?php while ($my_query->have_posts()) : ?> $my_query->the_post(); ?> <li> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> <?php // setup_postdata( $post ); <- THERE IS NO NEED TO SETUP_POSTDATA HERE (YOU'VE ALREADY CALLED the_post() ON QUERY $type_terms = wp_get_post_terms( $post->ID, 'type'); if ( $type_terms ) { echo '<span>('. esc_html($terms[0]->name) .')</span>'; } ?> </li> <?php endwhile; ?> </ol> <?php endif; ?> <?php // wp_reset_query(); <- YOU DON'T CHANGE GLOBAL $wp_query, SO THERE IS NO NEED TO RESET QUERY (ESPECIALLY DON'T DO THIS FOR EACH $tax_term } } // BUT YOU DO CHANGE GLOBAL $post, SO YOU SHOULD RESET IT'S VALUE TO BE COMPATIBLE WITH PLUGINS AND SO ON wp_reset_postdata(); ?> 

Упорядоченные списки (OL) были бы намного лучше, чем в параграфах (P) в этом случае (так как это ЛИСТЫ животных ORDERED BY name).