Увязать записи в одном типе записи
Есть произвольный тип записи "Магазины", в котором 10 записей (магазинов), например.
Магазины 1,2,3 и 4 являются магазинами одной сети.
Так вот, как можно увязать эти 4 записи, чтобы можно было вывести в записи 1 остальные - 2,3,4? Соответственно, в записи 2 вывести 1,3,4. Тоже самое для 3 и 4.
Т.е. в админке в записи 1 нужен метабокс с множественным выбором записей, которые нужно вывести на странице.
Буду признателен за помощь.
Создай метаполя, например сеть1 и сеть2. Далее сунь 1 2 3 4 в сеть1, 5 6 7 8 в сеть2 и т.д. Далее, на странице записи 2, получи метаполе её сети и через wp_query выведи все записи с такой же сетью, но исключи из запроса текущую.
В итоге получится что-то похожее на метки, но через метаполя. Для создания метаполей используй эту статью. Или ставь плагин...
Также можно регнуть новую таксу для типа записей магазины и связать их через нее... Но если там всего несколько сетей и 10 магазинов, то метаполя предпочтительнее пожалуй...
Тимур, я сделал через таксономию.
Термин 1 - название сети 1.
Термин 2 - название сети 2.
В нужных записях прочекал нужные сети.
Но когда делаю вывод во фронтенде в записи, то в ней идет вывод всех записей, у которых есть термин или 1й или 2й.
Подскажи пожалуйста, как мне отсечь термины других постов и остаться в рамках одного термина в выводе в single.php?
Через get_posts() выводи с указанием параметра tax_query. Какие проблемы тут могут быть не понимаю...
Проблема у меня в выводе.
Выводятся или все посты, у ктрх есть любой термин из этой таксономии, или только для одного конкретного термина (через tax_query).
Через get_post() вывожу с tax_query, но это работает только для конкретного термина, который нужно указать в tax_query.
<?php $args = array( 'post_type' => 'my_post_type', 'tax_query' => array( array( 'taxonomy' => 'filials', 'field' => 'slug', 'terms' => 'termin_1' // но сетей же несколько ) ), ); $myposts = get_posts( $args ); foreach( $myposts as $post ){ setup_postdata($post); get_template_part( 'template-parts/content-123', get_post_format() ); } wp_reset_postdata(); ?>Вывести для одного поста понятно как, а как сделать связку эту для всех не могу понять.
Тебе нужно получить имя термина текущей записи и передать динамически в параметры:
global $post; $taxname = 'filials'; $myterms = get_the_terms( $post->ID, $taxname ); // выводим связанные записи if( $myterms ){ $myterms = array_shift( $myterms ); $myposts = get_posts( array( 'post_type' => 'my_post_type', 'tax_query' => array( array( 'taxonomy' => $taxname, 'terms' => $myterms->term_id, ) ), ) ); if( $myposts ){ foreach( $myposts as $post ){ setup_postdata($post); get_template_part( 'template-parts/content-123', get_post_format() ); } wp_reset_postdata(); } }Тимур,ты мега гуру, благодарю.
ACF Relationship
Спасибо за вариант. Конечно хотелось бы обойтись без плагина.
Напишите свой функционал, в чем проблема ?
"Все такие умные" - всем нужно без плагинов. Пишите свой код и будет без плагинов.
А вообще есть библиотеки на github - которые упрощают работу с метаполями.
Можете выбрать одну из них. То есть, подключаете код библиотеки - и создаете нужны метабокс Relationship
Вот одна из них - https://github.com/WebDevStudios/CMB2
Мне нужно вывести в админке для записи метабокс со всеми записями с чекбоксами, чтобы я прочекал нужные и они сохранились с привязкой к своим ID с возможностью их последующего вывода во фронтенде в той записи, в которой я их прочекал.
С созданием метабоксов, метаполей проблем нет. Мне подсказать бы какими функциями эту задачу обыграть. И тут видимо c post_parent надо заморочиться.