WordPressで格言っぽい「今日の一言」をランダムに表示させる方法

このブログでどのくらい技術的な話題を扱うか未定なのですが、とりあえず「読者が誰なのかあまり気にしない」という方針のもと備忘録的な感じで書いておきます。

右上に「今日の一言」というのを設置しました。実は「今日の」というのはウソで(笑)あらかじめ用意した文章の中から一つをランダムで表示しています。この記事を書いている時点では2つしか用意していないので、交互に出てくるだけですが…。

では、この機能の作り方の解説です。

カスタム投稿タイプを作る

まずは、一言を投稿するためのカスタム投稿タイプを作成します。

  • 入ってなければCustom Post Type UIなどのカスタム投稿タイプを編集するためのプラグインをインストールします。以後このプラグインを使用しているという前提で解説します。
  • ここでは”todayswords”というカスタム投稿タイプ名をつけました。
  • ラベルは”今日の一言”にします
  • Advanced Optionsを開き、Editor以外のサポートを外します。
  • 保存します
  • 「今日の一言」を適当にいくつか追加しておきます。

管理画面のカスタマイズ

現時点では、管理画面での「今日の一言」の投稿一覧には必要な項目がなかったり不要な項目があったりします。具体的には、タイトルは不要、本文が必要です。

function.php

//今日の一言(管理画面の一覧カスタマイズ)
function custom_todayswords_columns($columns){
  $columns['editor'] = "テキスト";
  unset($columns['title']);
  return $columns;
}
function add_todayswords_column($column_name, $post_id){
  if( $column_name == 'editor' ){
    $post = get_post($post_id);
    echo attribute_escape($post->post_content);
  }
}
add_filter( 'manage_edit-todayswords_columns', 'custom_todayswords_columns' );
add_action( 'manage_posts_custom_column', 'add_todayswords_column', 10, 2 );

これで一覧上に一言がそのまま表示されているはずです。

表示エリアの準備

ここではWidgetエリアに表示する場合の説明です。そうでない場合は適宜読み変えてください。

まず、PHP Text Widgetをインストールします(もし入っていなければ)。これはWidgetエリアのTextウィジェットでPHPを実行可能にするプラグインです。

次に、新規のTextウィジェットを配置します。タイトルは”今日の一言”にします。内容は以下のとおりです。

'todayswords', 'posts_per_page' => 1, 'orderby' =>rand ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?>

CSSで整える

あとは、お好みのデザインに仕上げてください。

これで、「今日の一言」がリロードする度にランダムに表示されるはずです。

完成後に書いているので、もれなどがあるかもしれません。もし「うまくいかねーぞゴルァ!」という方がいらっしゃいましたら、twitterなどでご連絡ください。

以上です。

カテゴリ: Web技術 日付:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事へのコメントはこちらへもどうぞ!!

Mastodon: @tomoki@tomokiwakimoto.com

X: @tomokiwa

Facebook: hwakimoto