WordPress「先頭に固定表示」の機能をカスタム投稿内で使用するため、
プラグインの「Stick post」を使用しています。
投稿画面内にはチェックボックスが表示されたのですが、アーカイブページで反映がされません。
確認したところ、get_postsの使用に問題があると思われたため、下記のURLを参考に以下のように修正しました。
http://hosting.talisnet.info/wp-sticky-posts-error/
先頭表示自体はできたのですが、次のような問題が発生します。
- 先頭表示させたい記事のアイキャッチが表示されない
- すべてのリンクが先頭表示させたい記事のURLになる
使用テーマ:TCD GENSEN
目的:有料掲載記事を優先表示させたい
どのように解消すればよいか、ご教授いただけますと幸いです。
または似たようなプラグイン等代替案などでも構いません。
よろしくお願いいたします。
<?php $args = array( 'post_type' => 'introduce', 'tax_query' => array( array( 'taxonomy' => 'category6', 'field' => 'slug', ), ), ); $the_query = new WP_Query( $args ); ?> <?php if ( $the_query->have_posts() ) : ?> <div id="introduce_list"> <div class="introduce_list_row clearfix"> <?php $i = 0; $row = 0; while ( $the_query->have_posts() ) : $the_query->the_post(); if ($i > 0 && $i % 3 == 0) { $row++; ?> </div> <div class="introduce_list_row clearfix"> <?php } $col_class = ''; if ($row % 2 == 0) { if ($i % 3 == 0) { $col_class = ' show_info'; } } else { if ($i % 3 == 2) { $col_class = ' show_info'; } } ?> <div class="introduce_list_col article inview-fadein<?php echo esc_attr($col_class); ?>"> <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>" class="clearfix"> <div class="image"> <?php if (has_post_thumbnail()) { the_post_thumbnail('size3'); } else { ?><img src="<?php echo get_template_directory_uri(); ?>/img/common/no_image3.gif" title="" alt="" /><?php } ?> </div> <div class="info"> <?php if ($dp_options['show_introduce_categories']) { $metas = array(); foreach(explode('-', $dp_options['show_introduce_categories']) as $cat) { if (!empty($dp_options['use_introduce_category'.$cat])) { $terms = get_the_terms($post->ID, $dp_options['introduce_category'.$cat.'_slug']); if ($terms && !is_wp_error($terms)) { $term = array_shift($terms); $metas[] = '<li class="cat"><span class="cat-'.esc_attr($dp_options['introduce_category'.$cat.'_slug']).'" data-href="'.get_term_link($term).'" title="'.esc_attr($term->name).'">'.esc_html($term->name).'</span></li>'; } } } if ($metas) { echo '<ul class="meta clearfix">'.implode('', $metas).'</ul>'; } } ?> <h3 class="title"><?php trim_title(32); ?></h3> <p class="excerpt"><?php new_excerpt(148); ?></p> <p class="more"><?php _e('Read more', 'tcd-w'); ?></p> </div> </a> </div> <?php $i++; endwhile; ?> <?php wp_reset_postdata(); ?> </div> </div>
とりあえずWP_Queryとしたらwp_reset_postdata();をつかって取得したクエリをリセットしましょう。あと、サムネイルの部分は何が出力されますか?no_image3.gifでしょうか?そうでないとしたらサムネイル画像のサイズにsize3を定義していますか?
wp_reset_postdata();については確かに抜けていたのでリセットしてみました。サムネイルはno_image3.gifが出力されています。
失礼しました。アイキャッチが表示されていない、という状況は正確には誤りでした。一覧ページで、本来該当するカテゴリのみが表示されるべき所を、該当しないカテゴリの記事も新着順に掲載され、アイキャッチが設定されていない記事が表示されている、という状況です。
全てのカテゴリ一覧で、カテゴリ(カスタムタクソノミー)が反映されず、先頭表示した記事がカテゴリに関わらず表示されています。
カスタムタクソノミーを絞りたいというのであれば $argsにその情報も渡さないといけませんね。WP_Queryは新たにループを作り出す関数です。アーカイブページだからと言ってそのカテゴリーを自動で取得はしません。カスタムタクソノミーの絞込は公式ページを確認しましょう。https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.82.BF.E3.82.AF.E3.82.BD.E3.83.8E.E3.83.9F.E3.83.BC.E3.81.AE.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF get_category()などして変数に渡し、$argsに追加すると良いと思います。
$argsにタクソノミーの情報を渡してみたのですが、今度は記事の取得ができなくなってしまいました。。何かおかしいでしょうか。。
タームで絞り込めば記事の取得は出来たのですが、今回特定のタームで絞り込む用途ではありません。
また、記事の取得は出来ましたが、やはりSticky postの先頭表示機能が機能していないようでした。
修正版の記述内容に編集しましたので、ご確認頂けますと幸いです。
ちなみにこの記事の内容のような記事一覧に対応させるような処理はすでに入れていますか?https://www.webantena.net/wordpress/plugin-sticky-custom-post-types/
あなたの回答
tips
プレビュー