WordPress как на ладони

Увязать записи в одном типе записи

Есть произвольный тип записи "Магазины", в котором 10 записей (магазинов), например.

Магазины 1,2,3 и 4 являются магазинами одной сети.

Так вот, как можно увязать эти 4 записи, чтобы можно было вывести в записи 1 остальные - 2,3,4? Соответственно, в записи 2 вывести 1,3,4. Тоже самое для 3 и 4.

Т.е. в админке в записи 1 нужен метабокс с множественным выбором записей, которые нужно вывести на странице.

Буду признателен за помощь.

0
Dmtry44
7.1 год назад 2
  • 0
    Kama9619

    Создай метаполя, например сеть1 и сеть2. Далее сунь 1 2 3 4 в сеть1, 5 6 7 8 в сеть2 и т.д. Далее, на странице записи 2, получи метаполе её сети и через wp_query выведи все записи с такой же сетью, но исключи из запроса текущую.

    В итоге получится что-то похожее на метки, но через метаполя. Для создания метаполей используй эту статью. Или ставь плагин...

    Также можно регнуть новую таксу для типа записей магазины и связать их через нее... Но если там всего несколько сетей и 10 магазинов, то метаполя предпочтительнее пожалуй...

    Dmtry44 7.1 год назад

    Тимур, я сделал через таксономию.
    Термин 1 - название сети 1.
    Термин 2 - название сети 2.

    В нужных записях прочекал нужные сети.
    Но когда делаю вывод во фронтенде в записи, то в ней идет вывод всех записей, у которых есть термин или 1й или 2й.

    Подскажи пожалуйста, как мне отсечь термины других постов и остаться в рамках одного термина в выводе в single.php?

    Kama 7.1 год назад

    Через get_posts() выводи с указанием параметра tax_query. Какие проблемы тут могут быть не понимаю...

    Dmtry44 7.1 год назад

    Проблема у меня в выводе.

    Выводятся или все посты, у ктрх есть любой термин из этой таксономии, или только для одного конкретного термина (через 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();
    	?>

    Вывести для одного поста понятно как, а как сделать связку эту для всех не могу понять.

    Kama 7.1 год назад

    Тебе нужно получить имя термина текущей записи и передать динамически в параметры:

    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();
    	}
    
    }
    Dmtry44 7.1 год назад

    Тимур,ты мега гуру, благодарю.

    Комментировать
  • 0
    stepan2278 www.weblancer.net/users/stepanko/?affili...

    ACF Relationship

    Dmtry44 7.1 год назад

    Спасибо за вариант. Конечно хотелось бы обойтись без плагина.

    stepan 7.1 год назад

    Напишите свой функционал, в чем проблема ?
    "Все такие умные" - всем нужно без плагинов. Пишите свой код и будет без плагинов.

    А вообще есть библиотеки на github - которые упрощают работу с метаполями.
    Можете выбрать одну из них. То есть, подключаете код библиотеки - и создаете нужны метабокс Relationship

    stepan 7.1 год назад

    Вот одна из них - https://github.com/WebDevStudios/CMB2

    Dmtry44 7.1 год назад

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

    С созданием метабоксов, метаполей проблем нет. Мне подсказать бы какими функциями эту задачу обыграть. И тут видимо c post_parent надо заморочиться.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация