Вывод персональных категорий
Здравствуйте! Хочу перенести книжный сайт на wordpress и столкнулся с проблемой...
Создал произвольный тип данных, указал категории (жанры книг, авторы, серии), но вот не получается их вывести должным образом... Собственно вопрос:
-
На странице index.php вывожу материалы и указываю автора книги. Если несколько авторов у книги, можно ли прописать только первого, но вместо второго указать "и др."?
Сейчас вывожу через<?php echo get_the_term_list( $post->ID, 'avtory', '', ', ', '' ); ?>
Но выводятся все авторы.
- на странице single.php выводятся серии книг. У книги может быть несколько серий, но у одной есть порядковый номер, можно ли указать его напротив нужной категории как на скрине?
Так же вывожу через
<?php echo get_the_term_list( $post->ID, 'serii-knig', '', ', ', '' ); ?>
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 " и засунуть в файл функций
и уже вызывать в сингле
А тоже самое, но без ссылки на категорию можно? Просто текст вывести?
$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 " и другие"; }Всё отлично! Работает! Большое спасибо!))
А со вторым вопросом не сможете подсказать?
я не знаю где у вас хранится "#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 " и другие"; }Здравствуйте! Так и не получается у меня по поводу серий.
Вот что получается
<?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 напротив первой серии при выборе категорий?
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