WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Вывод персональных категорий

Здравствуйте! Хочу перенести книжный сайт на wordpress и столкнулся с проблемой...
Создал произвольный тип данных, указал категории (жанры книг, авторы, серии), но вот не получается их вывести должным образом... Собственно вопрос:

  1. На странице index.php вывожу материалы и указываю автора книги. Если несколько авторов у книги, можно ли прописать только первого, но вместо второго указать "и др."?
    Сейчас вывожу через

    <?php echo get_the_term_list( $post->ID, 'avtory', '', ', ', '' ); ?>

    Но выводятся все авторы.

  2. на странице single.php выводятся серии книг. У книги может быть несколько серий, но у одной есть порядковый номер, можно ли указать его напротив нужной категории как на скрине?

Так же вывожу через

<?php echo get_the_term_list( $post->ID, 'serii-knig', '', ', ', '' ); ?>
0
Николай
5 лет назад
  • 1
    kolshix779 paxtoy.com

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

                    $cur_terms = get_the_terms( $post->ID, 'avtory' );              
    				foreach( $cur_terms as $cur_term ){
    					$i++;
    					if( $i<=1 ){
    						echo '<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>';
    					}
    
    				}
    				if( $i>=2){
    					echo " и другие";
    				}

    3 - вариант чтоб не засирать single.php
    взять скопировать функцию get_the_terms из оригинала
    https://wp-kama.ru/function/get_the_terms
    подправить под свои нужды и назвать как удобно к примеру "get_the_term_list_only_first " и засунуть в файл функций
    и уже вызывать в сингле

    <?php echo get_the_term_list_only_first( $post->ID, 'avtory', '', ', ', '' ); ?>
    
    Николай 5 лет назад

    А тоже самое, но без ссылки на категорию можно? Просто текст вывести?

    kolshix 5 лет назад
                    $cur_terms = get_the_terms( $post->ID, 'avtory' );              
    				foreach( $cur_terms as $cur_term ){
    					$i++;
    					if( $i<=1 ){
    						echo $cur_term->name;
    					}
    
    				}
    				if( $i>=2){
    					echo " и другие";
    				}
    Николай 5 лет назад

    Всё отлично! Работает! Большое спасибо!))

    А со вторым вопросом не сможете подсказать?

    kolshix 5 лет назад

    я не знаю где у вас хранится "#7", в какой таблице. Получите эти данные, присвойте в переменную и добавьте в код

                    $permennaya = php код получение порядкового номера
    
    				$cur_terms = get_the_terms( $post->ID, 'avtory' );              
    				foreach( $cur_terms as $cur_term ){
    					$i++;
    					if( $i<=1 ){
    						echo $cur_term->name . $permennaya;
    					}
    
    				}
    				if( $i>=2){
    					echo " и другие";
    				}
    Николай 5 лет назад

    Здравствуйте! Так и не получается у меня по поводу серий.

    Вот что получается

    <?php $cur_terms = get_the_terms( $post->ID, 'serii' );              
    				foreach( $cur_terms as $cur_term ){
    					$i++;
    					if( $i<=1 ){
    				echo '
    					<div class="str"><div class="rl-1">Серия</div><div class="rl-2">
    						<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a> #$n_cerii
    					</div></div>
    
    				';
    				}
    
    				}
    				if( $i>=2){
    				echo '
    					<div class="str"><div class="rl-1">Серия</div><div class="rl-2">
    						<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>
    					</div></div>
    
    				';
    				}
    ?>

    serii - это произвольные категории
    n_cerii - это произвольное поле (номер в серии)

    Но серия книги выставляется первая не та которую указываю, а происходит сортировка по алфавиту. Как её отключить?

    И как в этом коде прописать n_cerii напротив первой серии при выборе категорий?

    kolshix 5 лет назад

    n_cerii - если данные хранятся в произвольном поле таксономии
    нужно получить эти данные

    https://wp-kama.ru/function/get_term_meta

    а потом врезать в код

         $permennaya = get_the_terms( $post->ID, 'serii' );    
    
    				$cur_terms = get_the_terms( $post->ID, 'avtory' );              
    				foreach( $cur_terms as $cur_term ){
    					$i++;
    					if( $i<=1 ){
    						echo $cur_term->name . $permennaya;
    						$n_cerii = get_term_meta( $cur_term->ID, "n_cerii", $single )
    					}
    
    				}
    				if( $i>=2){
    						echo " и другие";                       
    					}
    				echo $n_ceri
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация