Поддержка Проблемы и решения taxonomy страницы

  • На странице, хочу вывести таксономии (выпускаемая продукция) привязанные именно к этой странице. Вот код страницы:

    
    <?php
    /*
    Template Name: Один завод
    */
    ?>
    
    <?php get_header(); ?>
    <div id="mid" class="fix">    
    
    <div id="mainCol" class="fix">
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    		<div class="post" id="post-<?php the_ID(); ?>">
    			<h1><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title() ?></a></h1>
    
    <div class="zavod">
    <div class="adsAndkontakt">
    <div class="zavod-contact">
    <ul>
    <li class="adress"><?php $key="address"; echo get_post_meta($post->ID, $key, true); ?></li>
    <div style="float: left;width: 220px;">
    <li class="telefon"><?php $key="fax"; echo get_post_meta($post->ID, $key, true); ?></li>
    <li class="telefon"><?php $key="telefon"; echo get_post_meta($post->ID, $key, true); ?></li>
    </div>
    
    <div style="float: left;width: 220px;">
    <li class="sait"><?php $key="www"; echo get_post_meta($post->ID, $key, true); ?></li>
    <li class="email"><?php $key="email"; echo get_post_meta($post->ID, $key, true); ?></li>
    </div>
    </ul>
    </div>
    <div class="ads336-280">
    <img style="width: 300px; height: 250px;" src="<?php bloginfo('template_directory'); ?>/images/336na280.png">
    </div>
    </div>
    			
    			
    
    <div class="vipuskaemaya-produksiya">  
    <h3>Выпускаемая продукция: </h3>
    
    <?php 
    
    $args = array( 'hide_empty=0' );
    $terms = get_terms('produkt', $args);
    
    // собираем их и выводим
    if ( !empty( $terms ) && !is_wp_error( $terms ) ) {
    	$count = count($terms);
    	$i=0;
    	$term_list = '<ul class="produkt">';
    	foreach ($terms as $term) {
    		$i++;
    		$term_list .= '<li><a href="' . get_term_link( $term ) . '" title="' . sprintf(__('View all post filed under %s', 'my_localization_domain'), $term->name) . '">' . $term->name . '</a></li>';
    		if ($count != $i) {
    
    		}
    		else {
    			$term_list .= '</ul>';
    		}
    	}
    	echo $term_list;
    }
    
    ?>
    
    </div>
    			
    			<p><?php the_content('<p class="serif">Читать запись полностью &raquo;</p>'); ?></p>
    			</div>
    		</div>
    		<?php endwhile; else: ?>
    		<div class="post">
    			<h2>Не найдено</h2>
    			<div class="entry">
    				<p>Извините, но того, что Вы искали, тут нет...</p>
    			</div>
    		</div>
    		<?php endif; ?>
    	</div>
    	
    	<?php include (TEMPLATEPATH . '/sidebar-zavod.php'); ?>
    </div>
    <?php get_footer(); ?>

    Я так пониманию, что код вывода таксономий прописан не верно. Подскажите пожалуйста как правильно ?)))

Просмотр 14 ответов — с 16 по 29 (всего 29)
  • Модератор Yuri

    (@yube)

    Страницам же. Не записям.

    Трудности перевода и тяжкое наследие примитивизма 🙂
    Страница — запись в таблице {prefix}posts, имеющая post_type (опять post!) равный ‘page’.

    Ок, со связями стало понятно. Но покажите весь код функции …

    Вункции вызова терминов ? Так он выше показан.

    Модератор Yuri

    (@yube)

    вместо get_terms() прописать get_the_terms() ?

    Да, попробуйте. Только аргументы приведите в соответствие.

    Home

    Вот это вот _the_ (определенный артикль) в функциях WP означает, «не вообще, а относительно конкретной («этой») записи (в широком смысле:)))

    Вункции вызова терминов ? Так он выше показан.

    Регистрацию таксономии, register_taxonomy

    Страница — запись в таблице

    Это то понятно, но ТС же таксономию присваивает (зачем-то) родным страницам. Не записям, не кастомному типу..

    Модератор Yuri

    (@yube)

    но ТС же таксономию присваивает (зачем-то) родным страницам. Не записям, не кастомному типу..

    Имеет право 🙂 Нормально. Хотя кастомный тип factory с таксонимией product был бы более правильным решением.

    Нормально

    Если только не будет 100500 страниц. А очень на это похоже.

    Хотя кастомный тип factory с таксонимией product был бы более правильным решением.

    ..и типом «post», а не «page» 😉

    Регистрацию таксономии, register_taxonomy

    
    // Создаем таксаномию для продукций предприятий
    add_action('init', 'create_taxonomy');
    function create_taxonomy(){
    
    	register_taxonomy('produkt', array('page'), array(
    		        'label'   => '', // определяется $labels->name
    		        'labels'       => array(
    			'name'              => 'Продукция',
    			'singular_name'     => 'Продукция',
    			'search_items'      => 'Поиск продукции',
    			'all_items'         => 'Вся продукция',
    			'view_item '        => 'Просмотр продукций',
    			'parent_item'       => 'Parent Genre',
    			'parent_item_colon' => 'Parent Genre:',
    			'edit_item'         => 'Изменить продукцию',
    			'update_item'       => 'Обновить продукцию',
    			'add_new_item'      => 'Добавить продукцию',
    			'new_item_name'     => 'Название новой продукции',
    			'menu_name'         => 'Продукция',
    		),
    'description'           => 'Вид производителей по направлению рода деятельности.', // описание таксономии
    		'public'                => true,
    		'publicly_queryable'    => null, // равен аргументу public
    		'show_in_nav_menus'     => true, // равен аргументу public
    		'show_ui'               => true, // равен аргументу public
    		'show_in_menu'          => true, // равен аргументу show_ui
    		'show_tagcloud'         => true, // равен аргументу show_ui
    		'show_in_rest'          => null, // добавить в REST API
    		'rest_base'             => null, // $taxonomy
    		'hierarchical'          => false,
    		'update_count_callback' => '',
    		'rewrite'               => true,
    		//'query_var'             => $taxonomy, // название параметра запроса
    		'capabilities'          => array(),
    		'meta_box_cb'           => null, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
    		'show_admin_column'     => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
    		'_builtin'              => false,
    		'show_in_quick_edit'    => null, // по умолчанию значение show_ui
    	) );
    
    • Ответ изменён 5 лет, 8 месяцев назад пользователем Umed.

    Вот лейбы — самое не интересное 🙂 Это что, всё?

    Да, попробуйте.

    Попробовал. Все термины исчезли.

    Только аргументы приведите в соответствие.
    https://developer.wordpress.org/reference/functions/get_the_terms/

    Не знаю ангилцкий. Методом тыка тоже ничего не добился.

    Вот это вот _the_ (определенный артикль) в функциях WP означает, «не вообще, а относительно конкретной («этой») записи (в широком смысле:)))

    За это спасибо. Не знал.
    Нашёл подсказку здесь: https://misha.blog/wordpress/get_the_terms.html
    Необходимо было вписать id поста, в функции вызова: $terms = get_the_terms( $post->ID,'produkt', $arg);

    Модератор Yuri

    (@yube)

    Не знаю ангилцкий.

    Беда-беда. Даже минимальное знание двух-трех дюжин слов позволяет увидеть смысл в именах переменных и функций, которые иначе превращаются в бессмысленные заклинания 🙂

    Хотя тут не принято давать ссылки на сторонние ресурсы по WP, возьму на себя смелость посоветовать искать перевод и толкование Кодекса у Тимура, на wp-kama.ru.

    Беда-беда. Даже минимальное знание двух-трех дюжин слов позволяет увидеть смысл в именах переменных и функций, которые иначе превращаются в бессмысленные заклинания 🙂

    Полностью с вами согласен. Но сайтостроение на wp это хобби, которым занимаюсь в свободное, от работы, время.

    Хотя тут не принято давать ссылки на сторонние ресурсы по WP, возьму на себя смелость посоветовать искать перевод и толкование Кодекса у Тимура, на wp-kama.ru.

    Господин Камаев потратил большое количество времени, и создал хороший ресурс. Иногда пользуюсь его шпаргалками. Но, у таких — «наощупходящих» — как я, часто не хватает мозгов понять все — что «недоразжеванно». На комментарии у него не хватает времени, наверное.

    В любом случае, всем участникам ветки — большое спасибо !))))

    Вопрос решён !
    Всем участникам большое спасибо, что направили на нужное русло — в поиске решения проблемы.

Просмотр 14 ответов — с 16 по 29 (всего 29)
  • Тема «taxonomy страницы» закрыта для новых ответов.