ホーム > 投稿記事 > WordPressのカスタム投稿のURLを変更する方法

WordPressのカスタム投稿のURLを変更する方法

投稿日 : 2019年04月12日   更新日 : 2019年10月04日
カテゴリー : WordPress
WordPressのカスタム投稿のURLを変更する方法の画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして6年~の経験があります。WordPressは2年~の経験があります。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

サイトを運営していて、途中で「カスタム投稿のスラッグを変更したい!」と思うことはありませんか。

2019年4月11日に、エンジニア婦人ノートでワーキングマザースラッグをワーキングペアレントに変更しました。これはカスタム投稿を用いたスラッグだったので、ただカテゴリーを変更するのと訳が違う…URLの前半部分が変わる大工事です。

その手順を記述します。

※以下は敢えてSQLが分かる人向けに書いています。尚、この作業はSQLがわからない人でもツールを使えばできます。エンジニアの方はSQL使ってくださいね。そんなに難しいことしていないので。

データベースのバックアップを取得する

スラッグを変更する、ということは格納されているWordpressのデータを変更するということ。バックアップは必須ですね。

もしテーマ内でスラッグを管理しているのであれば、そこも変更する必要がありますので、テーマのバックアップを取得してください。テーマ内の変数調整については諸々の状況によるのでここでは省略します。

移動先となるカスタム投稿を作成する

WordPressにログインし、移動先となるカスタム投稿を作成します。

CustomPostTypeUIを使っているのであれば、そこから新しいカスタム投稿を作成します。テーマ内に書いている場合は、他と同じように移行先のものを記述してください。スラッグ名は新しいものにします。

テーマ内functions.phpに書いている場合は他と同様に追加します。

// カスタム投稿を追加
register_post_type( '新しいスラッグ名(半角英数字)', //カスタム投稿タイプ名を指定
	array(
			'labels' => array(
					'name' => __( '新しいカスタム投稿の表示名' ),
					'singular_name' => __( '新しいカスタム投稿の表示名' )
			),
			'public' => true,
			'has_archive' => false, /* アーカイブページを持つ */
			'menu_position' =>6, //管理画面のメニュー順位、好きな番号を
			'supports' => array(
					'title',
					'editor',
					'thumbnail',
			),
	)
	);

register_taxonomy_for_object_type('category', '新しいスラッグ名(半角英数字)'); //カテゴリーを使いたい場合に追加

SQLでpost_typeを変更する

phpMyAdminにログインします。

ログイン後、Wordpressのデータベースを選択します。

以下のSQLを実行します。

// カスタム投稿を追加
UPDATE `wp_posts` SET `post_type`='変更後のカスタム投稿のスラッグ名'
WHERE `post_type`='変更前のカスタム投稿のスラッグ名'

管理画面から一括で移動できたことを確認できます。

ワーキングマザーのポストタイプをワーキングペアレントにしたときの実際のSQLはこちらです。

// カスタム投稿を追加
UPDATE `wp_posts` SET `post_type`='working_parents'
WHERE `post_type`='working_mother'

今回はカスタム投稿からカスタム投稿へ移動していますが、これを投稿(post)からカスタム投稿、投稿(post)から固定ページ(page)、などの移動も同様にできます。

SQLを使えない方はプラグインを使おう

「データベースにアクセスして、SQLを流すなんて、とんでもない!」

という方は「Post Type Switcher」というプラグインを使いましょう。

インストールして有効化すると、編集画面に「Post Type」が追加されます。ここを変更したいものにして実行すると、上記と同じことができます。

Post Type Switcherを適用した画面

右側に「Post Type」が追加されます。ここで任意の投稿タイプを選択して更新すると、上記と同じことができます。

プラグインの更新は止まっていますが、これを使ってもPostTypeは正常に変更されました(※2019年4月11日情報)

パーマリンクを再設定する

管理画面上はすべてのカスタム投稿が反映されていますが、公開されているであろうページにアクセスするとリンク切れになっていると思います。

再度パーマリンクを設定すると、リンクが正常に動作するようになります。

設定>パーマリンク設定

から、何も変更せずに「変更を保存」を押下します。

パーマリンク設定画面

記事内リンクを変更する

最後に、記事の中にあるリンクを変更します。上記では元となる投稿のURLを変更しただけなので、記事内にあるリンクまでは見ていません。この部分をサポートします。

ここは複数に渡ることもあるので、手動移行御用達の「Search-Replace-DB-master」を使います。

WordPressインストールディレクトリの中にSearch-ReplaceDB一式を入れます。

Search Replace DB

ブラウザからアクセスし、

「/変更前カスタム投稿名/」→「/変更後カスタム投稿名/」を入れて実行します。

こうすると、記事の中にあった旧URLが更新され、リンク切れがなくなります。

このツールを使った後は、必ずディレクトリごと削除しておきましょう。

(post_contents内をSQLで一括UPDATEでも行けます。恐らくそういうのはwp_postsとwp_post_meta辺りでしょうし…。どこにあるのかわからなくて探すのもな、ということでこれは試しませんでした。)

SearchReplaceDBツールを使いたくない方はプラグインを使おう

「こんなツールをFTPでアップロードするなんて、とんでもない!」

という方は、「Search & Replace」などのプラグインを使いましょう。

(有名どころに「Search Regex」というプラグインもありますが、こちらは3年前に更新されたのが最後のようです(※2019年4月12日時点の確認情報)。同機能の新しいものを使った方がいいかもしれません。)

※私はこれらのプラグインを使ったことがないので、動作保証はしません。

感想

やってみるとそれほど難しくないことがわかります。

うまくいかなかったときのバックアップがあれば、(ある程度)何しても大丈夫です。失敗したら戻せばいい。

開発環境があるなら、そこで試してから本番機で試すと尚良いでしょう。

自分のサイトだから失敗しても自分に迷惑がかかるだけだし、大丈夫(お客さんのところで失敗するよりよほどいいです。)

カスタム投稿スラッグを変更したくなったら、試してみてください。

余談:カスタム投稿のスラッグ変更、SEO的には…?

影響出ると思います。(検証はしていません)

一般的にはURL変更はアクセス数に影響が出るから、安易にやるなと言いますね。

もし過去URLでアクセスしてきた人が迷子にならないようにしたい人は、.htaccessでリダイレクト設定をしてあげると親切ですね。

まあ、弱小サイトは別に気にならないので(←)、特に気にせずやってしまいました。リダイレクト設定もしていませんよ。

まとめ

  • カスタム投稿のスラッグ名を変えることは、そんなに難しくない
  • 移行先のカスタム投稿を作って、SQLで実行して一括移動する
  • SQL使いたくない方はツールでやることも可能
  • 但しSEO的にはマイナスに働く可能性があるので、ご利用は計画的に…

長くサイトを運営していると何かとこうしたい、ああしたいという要望が出てくるものです。

その要望を実現するのも、私の仕事です。(改修費用はご負担願います)

楽しい物造りを

NaoLight

自分のブログやサイトを、楽しく作ってもらえたら。

プログラムを使って望み通りに、拡張しやすく、自分の思うように。

できたときに、すごく楽しい!と思ったら。

控えめに言って、「最高です」。

NaoLight -NAOT-(なおらいと、なおと、と呼んでください)はそんな思いをカタチにする、WordPressのテーマです。

ご購入はこちらからお願いします(BOOTHへ移動します)。

Nao Light-NAOT-公式サイト



この記事にコメントする

入力エリアすべてが必須項目です。承認制のため、表示までに時間がかかる場合があります。

CAPTCHA


内容を確認の上、コメントをお願いします。