「WordPress」カテゴリーアーカイブ

WordPressで1ページ内に全記事タイトル一覧を表示する方法

 WordPressで全記事一覧を表示する方法は出ていたが、1ページ内に表示するやり方を書いたサイトを見つけられなかったので、自作してみました。いくつも参考にしたサイトはありますが、こちらのカテゴリごとの記事一覧をWP_Queryで表示する【WordPress】というページが一番役に立ちました。

 カテゴリー順は当初、文字コード順となってましたが、それではあんまりなので、投稿数順にひとまずしておきました。本当はカテゴリー順を決められるといいんですけど、WordPressでは標準機能でカテゴリー順を設定するやり方がないみたいなんで。

 こんな感じになりました。「カテゴリー別全記事一覧」(もう少し工夫の余地はありそうですが……)。

 具体的なやり方としては、以下の流れになります。

  1. 子テーマ用のフォルダを作成
  2. 子テーマ用のstyle.cssとfunctions.phpを作成し、上で作ったフォルダにftpで転送
  3. 子テーマを有効化
  4. 全記事一覧用のphpを子テーマ用のフォルダにftpで転送
  5. WordPress管理画面で固定ページ・新規作成を開く
  6. 「カテゴリー別全記事一覧」など適当なタイトルをつける
  7. テンプレートで「titles_by_category」を選び、公開ボタンを押す

 子テーマや固定ページでのテンプレートの使い方は各自、ググるなどして調べてみてください。

 ”titles_by_category.php”をそのまま使いたい方は以下にzip圧縮したものを置いておきました。

titles_by_category.zip

 中身を以下に掲載しておきます。

<?php
/**
 * Template Name: titles_by_category
 *
 * The template for displaying all post titles by category in a page
 * arranged from page.php by Yoshiro Miyagoshi
 *
 * @package WordPress
 * @subpackage Twenty_Fourteen
 */

get_header(); ?>

<div id="main-content" class="main-content">
    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">
            <header class="entry-header"><h1 class="entry-title">カテゴリー別全記事一覧</h1></header>
            <hr />
            <div class="entry-content">
<?php
//    $categories = get_categories();
    $catargs = array(
        //投稿数の多い順
        'orderby' => 'count',
        'order' => 'desc'
    );
    $categories = get_categories($catargs);
    foreach( $categories as $category ):
        $str = '
                <h2><a href=';
        $str .= get_category_link( $category->term_id ) .'>'. $category->cat_name;
        $str .= '</a></h2>';
        $str .= '
                <ul>';
        $args = array(
            'cat' => $category->cat_ID,
            'posts_per_page' => -1
        );
        $query = new WP_Query( $args );
        if ( $query ->have_posts() ) :
            while ( $query ->have_posts() ) :
                $query ->the_post();
                $title = get_the_title();
                $str .= '
                    <li><a href="'. get_permalink() .'">'. $title .'</a></li>';
            endwhile;
        endif;
        wp_reset_query();
        $strFinal .= $str . '
                </ul>';
    endforeach;
    
    echo $strFinal;
?>

            </div><!-- #entry-content -->
        </div><!-- #content -->
    </div><!-- #primary -->
    <?php get_sidebar( 'content' ); ?>
</div><!-- #main-content -->

<?php
get_sidebar();
get_footer();

WordPressでブログ記事をすべて一覧できるページを作ってみた

 個人ブログを見ていて、この人おもろいな、と思った時に、その人が書いたブログ記事がすべて一覧で表示されているページがあるといろいろ有益なんじゃないか、と前から思っていた。WordPressではないが、fc2ブログでそういうページがあるのを以前知り、なるほど、記事タイトルを一覧するだけでその人の関心事が浮き上がってくるし、その人のブームのようなのも見えてくるので、興味深いページになると思う。

 ただ、私と同意見の人はあまりいないようで、SEO的にもおいしくないのか、あまり「全記事一覧」について書かれているサイトはなかった。昔風の自分でhtmlをゴリゴリ書いてたような人のサイトだとそういうページはあるものだが、最近のCMS全盛の時代にふさわしくないのだろうか。

 私があるといいと思うのは、1ページ内ですべての記事を表示するページ。一日にいくつも記事が書かれるようなサイトだとちょっとあまりに縦に長くなりすぎて複数ページにわけるなどの工夫が必要になってくるだろうが、今の私程度の更新数だと投稿数はしれているので、1ページでも十分表示可能な範囲に収まる。

 というわけで、WordPressでの実現方法を調べてみたのだが、私のほしい「1ページに全記事タイトル一覧を表示する」ための方法というのが書いてなかったので、あちこちの記事で知った方法をつなぎあわせながら、作成してみたのがこちらの「カテゴリー別全記事一覧」。

 もっといろいろ工夫の余地がありそうだが、ひとまず最低限は実現出来ているので、公開しておきます。

 WordPressで1ページ内に全記事一覧を表示する手軽なやり方は見つけられなかったので、次の記事で具体的なやり方をメモがてら書いておきます。

 ちなみにfc2では2013年時点で記事一覧が100件に限定されたようだ。こちらの「記事一覧の表示数」で一覧できる表示数をユーザーが指定できるよう、リクエストがでている。コメントで「titlelistはFC2blogのキラーファンクション。全て一覧出来てこそ意味があったのに」とあり、一部のユーザーにとってはやはり全記事一覧は意味がある、ってことなんかも。

WordPressで子テーマから親テーマ呼び出しに使ってた@importが非推奨になってた

 先日からWordPressのカスタマイズに着手し始めたのだが、度重なる子供からのインタラプト要求に対応しながらとなり、中断が重なって、あまり思うようには進められていない。もうすぐ子供とお別れ状態に入るため、子供との時間は大事にしたいので、毎回面倒と思う場合でも対応しているのだが……。

 というわけで、まずはざっと基本をおさらいしつつ、以前直した部分が反映されていない件の調査を始めることにした。

 結果からいうと、子テーマを選択し直したら一発で治った。以前、挙動がおかしくなった時に、テーマを選択し直したことがあって、その時に不用意に親テーマである「Twenty Fourteen」の方を選択して、そのままにしてしまったことが原因。多分こういうしょうもないことだと思ってたが、やっぱりしょうもなかった。子テーマのことは頭に入っていたが、普段更新作業だけで手一杯で、少しずつでも触り続けないと忘れてしまうな。

 改めて子テーマについて調べてみたところ、Codexの子テーマ欄に以下のような記述があった。

以前は @import: を使用して親テーマのスタイルシートをインポートしていましたが、これはもはや良い方法ではありませんので注意してください。親テーマのスタイルシートをキューに入れる正しい方法は、子テーマの functions.php で wp_enqueue_script()を使用する方法です。したがって子テーマには functions.php を作成する必要があります。

 importが定番のやり方っぽかったので、私も使ってたが、「もはや良い方法ではない」なんてことになってるとは知らんかった。というわけで、さっそく公式が勧めるやり方に変更。やり方もまんま公式に書いてあるので、その通りやったら出来た。

 しかし、「もはや良い方法ではない」とか、かなりなno longerの直訳調だな、と思って英語版見てみたら、やっぱり “using @import: this is no longer best practice” とあった。私は直訳調、個人的には好きですけどね。日本語に面白い表現をもたらしてくれるんで。

(WordPressカスタマイズ話つづく)

ワードプレスの勉強再開

 いつの頃からかゴールデンウイークはプログラムの勉強をする、ということにしていて、いろいろとすることが山ほどあるのだが、子守をしながら、今年はまた一昨年同様にWordPressに時間を割くことにした。

 2年前はサイト開設だけで精一杯で、WordPress本体の勉強まではほとんど手が回らなかったが、2年が経過し、詳解WordPressという本を買っていたこともあって、この本をざっと読んでみて、仕組みを勉強しているところ。

 この本のおかげである程度、WordPressがどのような仕組みで動いているのか、何となくではあるが、理解出来た気がする。PHPとMySQLについて、基本的なところは理解しているつもりなので、その辺りで引っかかることはなかったが、さて、カスタマイズしようという時にどこに気をつけるべきなのか、具体的に手を動かそうとしたところで、手が止まってしまった。仕組み部分の前に全体の概要をおさらいしないといけないぐらいには忘れてしまっており、木を見て森を見ず状態になっているようなので、まずは最初からざっと確認するところから始めることにした。

 前回はまだ公開前だったこともあり、サーバでやりたい放題で試行錯誤をしていたが、アクセス数などしれているとはいえ、検索などで当サイトにたどり着かれる方もおられるので、今回はローカルで試行錯誤することにした。

 ローカル環境の構築と移行が思いの外うまく行かず難儀していたが、先ほどなんとか表示されるところまでこぎつけた。結果的に WordPressサイトのサーバーからローカル、ローカルからサーバーへの移行手順 というサイトのやり方でやるとうまく行った。このやり方は知識がなくてもできるやり方なのだが、無駄にいろいろとあがいて時間を浪費してしまった。最初からこのやり方にしておいたらよかった。

 とりあえず、今の課題として、まずは、以前のカスタマイズが一部効いていないのを調べる、というのと、記事一覧を表示できるようにすること。

 外観に手を加える場合、そのままテーマのソースコードに手を入れてしまうと更新時に上書きされてしまうので、子テーマを作りましょう、ということがあちこちに書かれていて、そこは注意していたつもりだが、なぜ戻ってしまったのか。

 あと、カテゴリーを押した時に記事タイトル一覧が出た方が便利なんじゃないの、と以前から思っていて、これぐらいのことはいくらなんでも簡単にできるだろうと、今まで調べたことはないのだが、これから調べてみようと思っている。多分、子テーマじゃなく直接触ればすぐに出来るだろうと思うが、更新されても大丈夫なやり方でやるにはどうすればいいか。

 その他、2年前からさらにいろいろと変わってるだろうから、そのあたりを調べてみて、カスタマイズの方向性を検討しようと思っている。

 4月は記事投稿が1件だけだったが、ひとまずなんか書いておこうということで、投稿しておきます。

~~追記~~
高速化が期待できるというphpバージョンアップをやってみた。表示がおかしくなってる箇所があるかもしれないが、しばらくこのまま様子見してみよう。

WordPress4.1.2自動更新でサイトが見られなくなる事案が発生

 今朝、ブログをざっと書いて、投稿ボタンを押し、プレビューを確認したところ、ページが表示されず、大いに焦った。ちょうど去年のゴールデンウイーク中にサイト構築して、それから1年間、特にトラブルなく運営できていたのだが、これはどうしたことかと思い、いくつか思い当たることを試してみたが、よく分からなかったので、レンサバ業者さんにサポート依頼のメールを書いたところ、すぐに調べて頂いて、返事をもらっていたのだが、他のメールにまぎれてしまい、先ほどまで気づかずにいたのだった(大汗。ある意味、普段からサポートいらずで運営出来てることを実感した次第で。過疎サイトだが、一時的にアクセスできない状態となり、ちょっと困っていたのだが、こうしてすぐに復旧できるのも、格安にもかかわらず安定運用されているネットオウルさんのおかげであります。

 WordPressが4.1.2に自動更新されたことにより、一部で問題が発生していたのは認識していたが、どうも私のは別の理由で、不用意にテキトーに作った子テーマが悪さをしていたようだ。子テーマの動きがおかしいのは認識してたので、時間を見て、調べないといかんな、と思っていた矢先だった。そして、子テーマを無視して、元の一世代前のデフォルトテーマTwenty Fourteenを適用し直すとあっさりと表示されたのだった。

 ミヤゴシ・ドット・ネットとは別にもう一つここでサイト運営をしてるのだが、そちらも「データベース接続確立エラー」が出て、アクセスできなくなっていたので、これはなんかMySQL当たりがおかしくなってるんじゃないか、と早合点してたのだが、こちらも更新時の問題だったようで、サポートの方の指示通り、configファイルを更新することで、こちらもあっさり復旧したのだった。

 WordPressのテーマについて、1年運営してきて、このままでも使えなくはないのだが、いくつか不満な点があるので、そろそろテーマカスタマイズをしようと思い始めているところなのだが、その前にWordPressの仕組みを基礎から解説した本で一度ちゃんと勉強せんとあかんなぁ、と思っていたところ、ちょうど、オライリーから4.x対応の『詳解WordPress』という基礎から学べそうな本が出てたので、これで勉強しようかと思っている。

 

 3.x対応でよさそうな本はいくつかあるが、せっかくなんで4.x対応のでないかなぁ、と探していたので、ちょうどいいタイミング。オライリーの本の表紙は動物が描かれている事が多いが、今回はスズメのようで、今後、「スズメ本」なんて呼ばれることになるんだろうか。田舎住まいなので、手にとって見られないのが残念だが、こういうのは自分的に旬の時にえいやっと買ってしまうのがいい。

 なんて言ってる間に4.1.3に自動更新されたり、さらに4.2が来ていたりして、なんだか更新間隔が早い今日このごろ。自動更新はセキュリティ的には必要なんだろうけど、今回みたいなことがあり、いきなりアクセスできなくなるなんてことが起こるので、やはりすぐに対応出来るように、仕組みを知っておかないといかんなぁ、というのを痛感した一日でした。