Shortcode для возврата отдельной персонализированной почты на основе таксономии почтовых сообщений

Например, если у меня есть пользовательский тип сообщения, который является « Case Studies »,

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

«Уэльс», «Англия», «Шотландия» …. Правильный должен быть выбран в зависимости от таксономии категории для этой должности (с тем же именем).

Когда будет найдено конкретное тематическое исследование и его вариация, скажем:

Пример: самая высокая гора

Категория (таксономия) таможенного поста: Шотландия

Мне нужно затем поместить эту информацию в шаблон html, например, вывод будет (данные вытащили из пользовательского сообщения):

<h3>Highest Mountain</h3> <p>Here would be the content specific to Scotland...</p> 

Поэтому, когда короткий код вводится пользователем в текстовое поле the_content, все, что им нужно ввести, например,

 [casestudy study_type="mountain"] 

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

Вся помощь очень ценится, я раньше не писал специальный шорт-код – так что чем больше объяснений, тем лучше – спасибо!

Solutions Collecting From Web of "Shortcode для возврата отдельной персонализированной почты на основе таксономии почтовых сообщений"

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

 [casestudy study_type="mountain"] 

Итак, во-первых, ваш обработчик короткого кода:

 add_shortcode( 'casestudy', 'my_shortcode' ); function my_shortcode( $atts ) { $a = shortcode_atts( array( 'study_type' => 'mountain', ), $atts ); $content = my_template( $a ); return $content; } 

Обратите внимание на shortocode_atts() . Он предназначен для фильтрации принятых параметров, которые будет обрабатывать ваш запрос функции шаблона ниже.

Затем, ваш шаблон:

 function my_template( $a ) { /** * I believe we should be in the loop already when this function is being called. * So to get the category slug of the current post in which the user has put the shortcode, you can try this. */ $category_terms = get_the_category(); $args = array( 'post_type' => 'case_studies', 'name' => $a['study_type'], 'category_name' => $category_terms[0]->slug, 'posts_per_page' => 1, ); $query = new WP_Query( $args ); ob_start(); if ( $query->have_posts() ) { while ( $query->have_posts() ) { the_post(); echo '<h3>' . get_the_title() . '</h3>'; echo '<p>' . get_the_content() . '</p>'; } reset_postdata(); } return ob_get_clean(); } 

Для этого вам нужно создать свои собственные короткие коды. Используйте add_shortcode() , создайте add_shortcode() систему, которая может получить все необходимые вам данные. В вашей теме функции functions.php

 add_shortcode('casestudy', 'myfunction'); function myfunction($atts){ $a = shortcode_atts( array( 'study_type' => 'mountain' ), $atts ); $content=''; // Get your data with get_post_meta return $content; }