WordPressで投稿を引っ越しする方法

通常投稿をカスタム投稿に移し替えたり、サイトそのものを移設したり。
そんな時に、WordPressの投稿記事を丸ごとインポート/エクスポートする方法を解説します。
今回は例として、通常投稿をカスタム投稿「技術ブログ」に引っ越しすることにします。

投稿データのエクスポート

WordPressダッシュボードのメニュー>「ツール」>「エクスポート」を選択します。

エクスポートしたい内容のラジオボタンを選択します。
例として「投稿」を選択し、エクスポートしたい範囲を選択します。
「エクスポートファイルをダウンロード」を選択します。

「WordPress.(ダウンロード日付).xml」がダウンロード出来たらOKです。

xmlデータの編集

エクスポートしたxmlファイルをエディタで開き、

CDATA[post]

というキーワードで検索します。

上記の「post」の部分を、カスタム投稿タイプで設定したスラッグ名に変更します。
例として「post」→「blog」に変更します。

もしカスタム投稿→別のカスタム投稿にしたいときも同様です。

編集したファイルのインポート

WordPressダッシュボードのメニュー>「ツール」>「インポート」を選択します。

「WordPress」というインポーターの「今すぐインストール」を選択し、「インポータ―の実行」を選択します。

対象のxmlファイルを選択し、「ファイルをアップロードしてインポート」ボタンを押せばOKです。

以上で、投稿データの引っ越しができます。

WordPressのカスタム投稿でカテゴリとタグを使う方法

WordPressで複数の投稿ページを持つ方法 その4(ラスト)
「カスタム投稿でカテゴリとタグを使う」

WordPressでは、通常投稿でもカスタム投稿でも、カテゴリとタグを使うことができます。
ただしタグクラウド等で記事を取得しようとすると、通常投稿しか取得されません。
設定ファイルを少しだけ編集することで、カスタム投稿もカテゴリやタグから取得できるようになります。

事前準備

FTPクライアントソフトを使ってサーバにアクセスし、WordPressの設定用phpファイルを編集できる状態にします。
対象のphpファイルは、/wp-contentディレクトリ下、使用しているテンプレート名前ディレクトリに入っています。
FTP接続する方法については、説明を省略します。

Custom Post Type UIの設定

WordPressダッシュボードのメニュー>「CPT UI」>「投稿タイプの追加と編集」を選択します。

「投稿タイプを編集」タブで、使いたい投稿タイプを選択する。
一番下の「タクソノミー」欄で、カテゴリー(WPコア)とタグ(WPコア)のチェックを入れます。

この2つはWordPressで最初から備わっているものです。
オリジナルの識別子をカスタマイズして作ることもできますが、今回は標準のカテゴリやタグを使うので、いま表示されている2つのチェックを入れましょう。

functions.phpへの追記

テーマ全体の設定を行う「functions.php」というファイルの末尾に、以下のように追記します。

function use_category_tag( $query ) {
    if( is_admin() || !$query->is_main_query() ) {
        return;
    }
    if( $query->is_category() || $query->is_tag() ) {
        $query->set( "post_type", array( "post", "設定したスラッグ名" ) );
        return;
    }
}
add_action( "pre_get_posts", "use_category_tag" );

上記の”設定したスラッグ名”は、カテゴリとタグを使いたいカスタム投稿タイプのスラッグ名です。例では「blog」とします。

これで、標準のカテゴリとタグを使う準備は出来ました。

記事にカテゴリとタグを表示する

最後に、記事の先頭や末尾にカテゴリやタグを記載する方法を解説します。
こうすれば、記事を読んだ時に、関連記事でフィルタリングしてまとめて読むなど、ブログとしての利便性が良くなります。

カスタム投稿用の、一覧表示と個別表示のphpファイルを開きます。
例では「archive-blog.php」と「single-blog.php」とします。

ファイル内に、whileループで記事毎の処理を行う箇所があります。

the_post();
get_template_part( "template-parts/post/content", get_post_format() );

という文が、記事の内容を展開している行になります。
この行のすぐ上または下に、以下の内容を追記します。

/*add category*/
echo 'カテゴリ:';
$categories = get_the_category();
foreach( $categories as $category ){
    echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . ' </a>';
}
echo '</br>';

/*add tag*/
echo 'タグ:';
$posttags = get_the_tags();
if( $posttags ){
    foreach ( $posttags as $tag ) {
        echo '<a href="' . get_tag_link( $tag->term_id ) . '">' . $tag->name . ' </a>';
    }
}
echo '</br>';

これで、記事の先頭または末尾にカテゴリとタグが表示されます。
それぞれはリンクになっており、クリックする事でカテゴリ検索/タグ検索が行えます。
カテゴリやタグを表示させる位置や形式は、お好みで。

あとはデザインやウィジェットを工夫して、利便性の高いブログを作ってください。

以上で、4回にわたって解説してきた
「WordPressで複数の投稿ページを持つ方法」の説明を終わります。

WordPressでカスタム投稿日付を表示する方法

WordPressで複数の投稿ページを持つ方法 その3
「カスタム投稿で投稿日付を表示する」

WordPressの通常投稿では投稿日付が表示されます。
しかし、カスタム投稿ではデフォルトでは表示されません。
少なくとも私の環境ではそうでした……。
記事の投稿日付がわからないと何かと困ることも多いので、投稿日付を記載する方法を解説します。

事前準備

FTPクライアントソフトを使ってサーバにアクセスし、WordPressの設定用phpファイルを編集できる状態にします。
対象のphpファイルは、/wp-contentディレクトリ下、使用しているテンプレート名前ディレクトリに入っています。
FTP接続する方法については、説明を省略します。

設定ファイルに情報を追記

カスタム投稿用の、一覧表示と個別表示のphpファイルを開きます。
例では「archive-blog.php」と「single-blog.php」とします。

ファイル内に、whileループで記事毎の処理を行う箇所があります。
the_post();のすぐ下に、
print get_the_date();という1行を追加するだけでOKです。

なお、WordPressで投稿日時を取得する関数として、以下の3つがあります。

  • the_date()
  • get_the_date()
  • the_time()

the_date()では、同じ日付を2回以上連続して出力できないという仕様があります。
同じ日に複数の投稿があった場合、後の投稿の日付が省略されてしまいます。
同じ日付でも表示したい場合は、他の2つを使用します。

the_time()は時間まで取得できる関数です。
日付だけを表示したい場合は、引数でフォーマットを指定してやる必要があります。
ブログでは時間まで表示する必要が無いことが多いので、今回は一番目的に適しているget_the_date()を使用しています。

これで、投稿記事のタイトルのすぐ上に、投稿日付が表示されます。

次回は、カスタム投稿でカテゴリとタグを使う方法について解説します。

WordPressでカスタム投稿表示ページを作る方法

WordPressで複数の投稿ページを持つ方法 その2
「カスタム投稿を表示するページを作る」

今回は、「カスタム投稿タイプ」で設定した投稿タイプを一覧表示/個別表示するための設定を行います。
phpファイルを直接扱うので、少し難しい部分です。

事前準備

FTPクライアントソフトを使ってサーバにアクセスし、WordPressの設定用phpファイルを編集できる状態にします。
対象のphpファイル群は、/wp-content/ディレクトリ下、使用しているテンプレート名のディレクトリに入っています。
FTP接続する方法については、説明を省略します。

一覧表示/個別表示用phpファイルの作成

「archive.php」が一覧表示(アーカイブ)用のファイル、
「single.php」が記事毎の個別表示用のファイルです。

通常投稿・カスタム投稿のいずれでも使用できますが、色々いじっても他に影響を出さないために別ファイルを作ります。
「archive.php」を複製し「archive-(スラッグ名).php」という名前に変更します。
「single.php」を複製し「single-(スラッグ名).php」という名前に変更します。
例では「archive-blog.php」と「single-blog.php」とします。
レイアウト変更等が不要であれば、中身はそのままでOKです。

archive、singleともに末尾に「-(スラッグ名)」とすることで、システムが自動的に認識してくれます。

以上で、表示ページを作るための準備ができました。

固定ページを追加する

このままでは、いくらカスタム投稿タイプの投稿を行っても、Webサイトには表示されません。
固定ページの作成と、当該ページへのメニュー追加を行います。

WordPressダッシュボードのメニュー>「固定ページ」>「新規作成」を選択します。

ページタイトルだけ入力します。例では「技術ブログ」とします。
「設定」>「固定ページ」>「パーマリンク」>「URLスラッグ」に、カスタム投稿タイプで設定したスラッグ名を入力します。
例では「blog」とします。

これで、先に作成したphpファイルに自動的に紐づけられます。

メニューに固定ページへのリンクを追加する

WordPressダッシュボードのメニュー>「外観」>「メニュー」を選択します。
固定ページの一覧から追加したいページを選択し「メニューに追加」を選択します。
右側の「メニュー構造」に追加されていればOKです。

これで、カスタム投稿ページの作成とリンクが出来ました。

次回以降は、投稿日時の表示や、カスタム投稿でカテゴリとタグを使う等、ブログとしての利便性を高めていきます。

WordPressでカスタム投稿タイプを設定する方法

WordPressで複数の投稿ページを持つ方法 その1
「カスタム投稿タイプを設定する」

WordPressは簡単にリッチなWebサイトを構築できる便利なプラットフォームです。
固定ページに加え、ブログのような投稿ページも作ることができます。
しかしデフォルトでは投稿ページを1つしか持つことができません。
本サイトのようにWordPressで複数の投稿ページを持ちたい場合は「カスタム投稿」という機能を使用します。
実際に使える状態になるまで、数回にわたって全工程の解説をしていきます。

プラグインのインストール

カスタム投稿タイプを使うには、
・functions.phpというファイルのソースコードを直接編集する方法
・カスタム投稿タイプを設定するプラグインをインストールする方法
の2つの方法があります。
できるだけGUIで簡単に出来る方が望ましいので、今回はプラグインを使います。

WordPressダッシュボードのメニュー>「プラグイン」>「新規作成」を選択します。

検索ボックスで「Custom Post Type UI」と入力して検索し、「今すぐインストール」をクリックします。
※WordPressのバージョンが古い場合は、先にWordPressをアップデートしろと言われます。

以上で、ダッシュボードから「CPT UI」(Custom Post Type UI)というメニューを選択できるようになります。

カスタム投稿タイプの作成

WordPressダッシュボードのメニュー>「CPT UI」>「投稿タイプの追加と編集」を選択します。

「新規投稿タイプを追加」タブで、以下のように入力します。
①投稿タイプスラッグ
追加したい投稿ページ名の半角英数字を入力します。
例では「blog」とします。

②複数形のラベル
追加したい投稿ページの表示名です。
例では「技術ブログ」とします。

③単数形のラベル
複数系のラベルと同じでOKです。

画面下部の「設定」までスクロールして……
④アーカイブあり
全記事を一覧表示するページ(アーカイブページと呼ばれる)を作るために必要な設定です。
「真」に設定します。(デフォルトは偽)

⑤階層
投稿タイプに親子関係があるか同課の設定です。
今回の使い方では親子関係は存在しないので、「偽」に設定します。

⑥タクソノミー
投稿ページにタグやカテゴリを適用するかの設定です。
カテゴリー(WPコア)とタグ(WPコア)は、WordPressで最初から備わっているものです。
オリジナルの要素をカスタマイズして作ることもできますが、今回は標準のカテゴリやタグを使います。
いま表示されている2つのチェックを入れましょう。

最後に「投稿タイプを追加」ボタンをクリックします。

以上で、ダッシュボードに「技術ブログ」という項目が追加され、カスタム投稿タイプの設定は完了です。

次回は作成した投稿タイプを一覧表示/個別表示するためのページ設定を行います。