Wordpressで投稿のリライトスラッグを変更してアーカイブと記事のパーマリンクに任意の文字列を設定する方法
Wordpressでは、「投稿(post)」の投稿タイプのアーカイブがデフォルトで無効になっています。
また、「投稿」のパーマリンクのみ独自のルールを指定することができません。
カスタム投稿タイプのアーカイブでは、rewrite_slugを変更することができますが、投稿(post)はデフォルトで搭載されている投稿タイプなので、rewrite_slugを変更するには下記の処理が必要です。
例えば、下記のように設定してみます。
| 設定内容 | 設定結果 |
|---|---|
| 投稿一覧(アーカイブ)のURL | https://[yourdomain.com]/information |
| 投稿の記事のパーマリンク | https://[yourdomain.com]/information/記事ID |
上記のように変更するには、function.phpに下記の通り加筆します。
/**
* 投稿の設定変更
* post_has_archive()
*
* @param object $args args.
* @param string $post_type post_type.
* @return object $args args.
*/
function post_has_archive( $args, $post_type ) {
if ( 'post' === $post_type ) {
$args['rewrite'] = true;
$args['has_archive'] = 'information';
}
return $args;
}
add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 );
/**
* 投稿のパーマリンク変更.
* add_article_post_permalink()
*
* @param string $permalink permalink.
* @return string $permalink permalink.
*/
function add_article_post_permalink( $permalink ) {
$permalink = '/information' . $permalink;
return $permalink;
}
add_filter( 'pre_post_link', 'add_article_post_permalink' );
/**
* 投稿のリライトルール変更
* add_article_post_rewrite_rules()
*
* @param object $post_rewrite post_rewrite.
* @return string $return_rule return_rule.
*/
function add_article_post_rewrite_rules( $post_rewrite ) {
$return_rule = array();
foreach ( $post_rewrite as $regex => $rewrite ) {
$return_rule[ 'information/' . $regex ] = $rewrite;
}
return $return_rule;
}
add_filter( 'post_rewrite_rules', 'add_article_post_rewrite_rules' );
上記をfunction.phpに加筆した後、管理画面→設定→パーマリンク設定で、なにも変更しないで構わないのでパーマリンク設定を更新してください。
こうすることでパーマリンク設定がリフレッシュされ、投稿のパーマリンクを変更することができます。
参考リンク
Simple Colors「投稿の個別ページのみパーマリンクを変更する方法」
http://www.warna.info/archives/2721/
GRAPHIC LAB「『投稿』タイプの個別ページのパーマリンクに任意の文字列を追加する方法」
https://datalibraries.info/wordpress-post-rewrite-rules/
この記事が気に入ったらシェアしてください