[WP]カテゴリーページをリスト表示に

787 views
2017/06/01 2017/08/12

漫画の一覧をリスト化したかったので試行錯誤。

特定のカテゴリーページだけ古い順にソートする

親テーマのfunctions.phpの最後に以下を書き加える。

//任意のカテゴリだけ並びを古い順に
function my_pre_get_posts($query) {
    if (is_category( array( 'A', 'B' ))) {
        $query->set('order', 'ASC');
    }
}
add_action('pre_get_posts', 'my_pre_get_posts');

ASCは古い順、DESCが新しい順です。
AやBはご自身のカテゴリーのスラッグに書き換えてください。

投稿順序を操作するプラグインIntuitive Custom Post Orderを入れていると、順序が上書きされてしまうようです。
多分カテゴリーページだけ回避する方法とかあると思うんですがわかりませんでした。

プラグイン DC Nicer Archive導入


リスト化するプラグインを導入。
DC Nicer Archiveはサイトはきえてるものの、wordpressのサーバーには残っているのでここからDC_nicer_archves.zipをDLしてください。

zipをプラグインインストールするのではなく、
FTPで必要ファイルをアップロードする。
plugins内にnicer_archives.php
テーマフォルダ内にcategory.php 、 search.php

参考:WordPressのカテゴリーページを記事タイトルの一覧表示にする簡単な方法

一部phpに不具合がある?とのことでnicer_archives.phpを書き直す。

post_categoryをcategory_idに
‘&orderby=title&order=asc&posts_per_page=9999’;を
&posts_per_archive_page=-1に
Expend機能を消す。該当部コメントアウトでOK
参考:WordPressのカテゴリ別ページを、記事タイトルによるリスト表示にする
参考:WordPressで検索結果とアーカイブをリスト表示にしたかった

DC Nicer Archiveカスタマイズ

レイアウト設定

header以降のclassなどを、元のategory.php 、 search.phpを参考になおしておいたほうがレイアウトが崩れないと思います。
twelveelevenの場合

<div id="content" class="narrowcolumn">
</div>
↓
<section id="primary" class="site-content">
<div id="content" role="main">
</div></section>

nicer_archives.phpの以下をコメントアウト。

<a title="Permanent Link: '.$category_name. '"
 href="'.get_category_link($post-&gt;category_id) .
'&amp;full=1" rel="bookmark">Expand</a>
アイキャッチつきにする

参考:労力を使わず各記事にアイキャッチ画像を設定する4つの方法-いつも空が見えるから
こちらのサンプルコードを参考に、category.phpを書き直し。
こちらでは新しい記事にNewの文字も出てくれる!
array(120,120)の数字を変えることでサイズを変更。

・サムネをちゃんと指定するか、WPのメディアにアップしておかないと、サイズ指定がうまくいきません。(2017.8.12追記)
外部リンクの画像などをサムネに指定してる場合、CSSでの調整が必要になります、
以下で短いほうを120pxに調整、長いほうはトリミングします。

img {
width: 120px;
height: 120px;
object-fit: cover;
}

・…また、うちでは上の方法だと抜粋がうまくいきませんでした。
1つめの記事の抜粋が並んでしまう…
残念ながら<?php the_excerpt(); ?> を削除。

抜粋表記はallinseopackの抜粋を利用しました。(2017.8.12追記)
<?php echo get_post_meta($post->ID, _aioseop_description, true); ?>

画像を大きくすると、文字が回り込んでしまう場合

上のサンプルコードでは、うちの場合floatが解除されていなかったので
</li>の最後に以下を記載

<div class="clear"></div>

追加CSSに以下を記載

/*floatの解除*/
.clear
{ clear:both; }

以上の設定でできたカテゴリー一覧がこちら!
(古い順ソート+DC Nicer Archive+category.php書き換え)

2017/6/4 課題。サイドバーの「最近の投稿」まで古い順ソートになってしまう…
解除方法がわからなかったので、追加CSSにて特定のカテゴリーページだけ最近の投稿ウィジェットを非表示に。
(☆☆☆=カテゴリースラッグ)

.category-☆☆☆ .widget_recent_entries{
    display: none;
}

プラグインなしでカテゴリーをリスト表示にする

一度うまくいったんですが今は反映できてない…(1件のみ表示になってしまった)
どうやったかわからなくなっちゃったから試行錯誤中。
これがうまくできれば、DC Nicer Archiveも不要だし表示されるもののカスタマイズもできそう。
参考:【カテゴリーページを記事タイトル一覧で全件表示する | Salty WordPress】