web-dev-qa-db-ja.com

カテゴリの投稿をアルファベット順に表示する(カスタム投稿タイプ)

  1. カスタム投稿タイプを「リンク」と呼びます
  2. 私はこのリンクタイプと呼ばれるカスタム分類法を持っています
  3. この分類法のためのテンプレートファイルがあります、 "taxonomy-link-category.php"
  4. 選択したリンクカテゴリの投稿をアルファベット順に表示するためのテンプレートが必要です

EDIT:WebサイトのLINKSページに、カスタム投稿タイプLINKのすべてのカテゴリ名がリストに表示されます。訪問者がカテゴリ名をクリックすると、アルファベット順にそのカテゴリ内のすべての投稿を一覧表示するためにワードプレスが必要です。私はそれを動かしています、(テンプレートファイルを使用して:taxonomy-link-category.phpを使用して)以下のコードで、投稿は時系列的に表示され、それらのうちの10のみ(Wordpressのデフォルト).

私はこのようなことを試してみました: アルファベット順にカスタム投稿タイプを表示します しかしもちろん表示されます...EDIT:の投稿だけでなくすべてのLINK投稿選択されたLINKカテゴリ.

これはtaxonomy-link-category.phpにある私の現在のコードですが、どこかに/ 'orderby' => 'title', 'order' => 'ASC'を追加するだけではいけませんか。

<?php get_header(); ?>
  <div id="content">                    
    <h1>Links</h1>
    <h2><?php echo get_queried_object()->name; ?></h2>
    <?php if (have_posts()) :   // start the loop ?>                    
        <?php while (have_posts()) : the_post(); // loop the posts ?>
            <h3><?php the_title(); ?></h3>
            <?php the_content(); ?> 
        <?php endwhile;     // stop looping the posts ?>                                
        <?php else :        // what to do if there are no posts to show ?>
        <h3>No posts</h3>
    <?php endif;        // end the loop  ?>
  </div><!-- #content -->
<?php get_footer(); ?>
2
codeview

実行前に pre_get_posts アクションを使用してクエリを変更します。これをあなたのテーマのfunctions.phpに入れてください。

function wpd_tax_alpha( $query ) {
    if ( $query->is_tax('link-category') && $query->is_main_query() ) {
        $query->set( 'orderby', 'title' );
        $query->set( 'order', 'ASC' );
    }
}
add_action( 'pre_get_posts', 'wpd_tax_alpha' );
3
Milo

はい。しかし、私はあなたの意図を誤解しているようです。

やってみました:

$args = array( 
    'post_type' => 'link', 
    'tax_query' => array(
    array(
        'taxonomy' => 'link-category',
        'field' => 'slug',
        'terms' => array( 'Birds', 'Cats', 'Dogs' )
    )
    ),
    'orderby' => 'title',
    'order' => 'ASC' 
    );
$query = new WP_Query($args);

これはアルファベット順にソートされたリストを作成し、そこに用語の並びがリンクカテゴリ分類法に含まれているはずです。

** EDITの元のコードで、terms配列の後にカンマがありませんでした。

1
jdm2112