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

Шаблон для произвольной таксономии с отображением родительских терминов и пагинацией

Подскажите где почитать.
Есть иерархическая таксономия
CHARACTERS:

  • Столоны
    пост 1
    пост 2
  • Шварценеггер
    пост 1
    пост 2
  • Джоли
    пост 1
    пост 2

Как вывести страницу по URL
https://site.com/characters/
где отобразятся только Столоны, Шварценеггер и Джоли?

Заметки к вопросу:
kolshix 1.1 года назад

1 первое конечно создал

taxonomy-characters.php

2 сейчас юзаю

    $terms = get_terms( [
				'taxonomy'   => 'characters',
				'hide_empty' => false,
			] );

			$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;  // имя страницы пагинации 
			$numOfItems = 12;                           // количество постов на странице
			$to = $page * $numOfItems;                  // посты до ($page) -это номер текущей умножена на ($numOfItems)-количество постов на странице
			$current = $to - $numOfItems;               // посты от 
			$total = sizeof($terms );                   // всего 
			$i = 0;

			// собираем их и выводим                
			for ( $i=$current; $i<$to; $i++) {
					$category = $terms[$i];
					echo  $category->name ;
					echo "<br>";              
			}

			?>
			<div class="post-nav">
				<div class="navigation">    
					<?php
						 unset($category);
					echo $output = paginate_links( array(
						'base' => add_query_arg( 'cpage', '%#%' ),
						'format' => '',
						'prev_text' => __('«'),
						'next_text' => __('»'),
						'total' => ceil($total / $numOfItems),
						'current' => $page
					  ));
					?>                             
				</div>
			</div>
			<?php

или так для альтернативной url пагинации

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
			$numOfItems = 16;                           // количество постов на странице
			$to = $paged * $numOfItems;                 // посты до ($page) -это номер текущей умножена на ($numOfItems)-количество постов на странице
			$current = $to - $numOfItems;               // посты от 
			$total = sizeof($terms );                   // всего 

			// собираем их и выводим                
			for ( $i=$current; $i<$to; $i++) {
					$category = $terms[$i];
					echo  $category->name ;
					echo "<br>";              
			}

			?>
			<div class="post-nav">
				<div class="navigation">    
					<?php
						unset($category);
						global $wp_query;

					echo $output = paginate_links( array(
						'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
						'format' => '?paged=%#%',                   
						'prev_text' => __('«'),
						'next_text' => __('»'),
						'total' => ceil($total / $numOfItems),
						'current' => $page
					  ));
					?>                             
				</div>
			</div>
			<?php

может есть что-то по элегантнее ??

0
kolshix
1.1 года назад 779
  • 0
    mi1384 solosofii.com

    Если речь о рубриках и метках..

    register_taxonomy( 'characters_cat', 'characters', array(
    		'labels'                => array(
    			'name'              => 'characters_cat'
    		),
    		'public'                => true,
    		'show_in_nav_menus'     => false,
    		'show_ui'               => true,
    		'hierarchical'          => true,
    		'show_admin_column' => true,
    		'rewrite'   => array( 'hierarchical' => true ),
    		'has_archive' => true
    	) );
    register_taxonomy( 'characters_tag', 'characters', array(
    		'labels'                => array(
    			'name'              => 'characters_tag'
    		),
    		'public'                => true,
    		'show_in_nav_menus'     => false,
    		'show_ui'               => true,
    		'show_tagcloud'         => true,
    		'show_admin_column' => true,
    		'has_archive' => false
    	) );
    register_post_type('characters', array(
    		'labels'             => array(
    			'name'   => 'characters'
    		  ),
    		'public' => true,
    		'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'custom-fields'),
    		'has_archive' => true,
    		'taxonomies' => array( 'characters_cat', 'characters_tag' )
    	) );
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация