add_permastruct()
は、WordPress にカスタムのパーマリンク構造を追加するための関数です。カスタム投稿タイプやカスタムタクソノミーに対して、独自の URL 構造を定義する際に使用されます。
例えば、特定のカスタム投稿を /custom-type/sample-post/
のような URL 形式にしたい場合などに役立ちます。SEO の最適化やユーザーにとって分かりやすい URL 設計を実現するために活用されます。
目次
機能の説明
add_permastruct()
は、WordPress に新しい URL のルール(パーマリンク構造)を追加するための関数です。通常、カスタム投稿タイプやタクソノミーにはデフォルトの URL 構造が適用されますが、この関数を使うことで、より柔軟な URL 設計が可能になります。
主な用途
- カスタム投稿タイプの URL 構造を変更
- カスタムタクソノミーの URL を整理
- SEO に最適化した URL の設計
シンプルなコード例
以下のコードでは、custom-post
というカスタム投稿タイプに対して、/custom/%custom_post%/
という URL 構造を追加します。
add_action('init', function() {
add_permastruct(
'custom_post',
'custom/%custom_post%',
['with_front' => false]
);
});
'custom_post'
:パーマリンクの識別名'custom/%custom_post%'
:URL の構造['with_front' => false]
:WordPress のデフォルトのベース(例:/blog/
)を無効化
使い方の説明
カスタム投稿タイプのパーマリンクを変更する
カスタム投稿タイプ portfolio
のパーマリンクを /works/
に変更する例。
add_action('init', function() {
add_permastruct(
'portfolio',
'works/%portfolio%',
['with_front' => false, 'ep_mask' => EP_PERMALINK]
);
});
引数の説明
'portfolio'
:識別名'works/%portfolio%'
:URL の形式(投稿スラッグが%portfolio%
に入る)['with_front' => false, 'ep_mask' => EP_PERMALINK]
'with_front' => false
:デフォルトのベースを無効化'ep_mask' => EP_PERMALINK
:URL をパーマリンクとして扱う
一緒に使うことが多い関連タグ
add_rewrite_rule()
add_permastruct()
でカスタムパーマリンクを追加した後、リライトルールを適用する場合に使用されます。
add_action('init', function() {
add_rewrite_rule('works/([^/]+)/?$', 'index.php?portfolio=$matches[1]', 'top');
});
'works/([^/]+)/?$'
:/works/sample/
のような URL に対応'index.php?portfolio=$matches[1]'
:WordPress にパラメータを渡す'top'
:リライトルールの優先度を高く設定
追加情報で取得したい場合
get_post_type_archive_link()
カスタム投稿タイプのアーカイブページのリンクを取得できます。
$archive_link = get_post_type_archive_link('portfolio');
echo '<a href="' . esc_url($archive_link) . '">ポートフォリオ一覧</a>';
出力例
<a href="https://example.com/works/">ポートフォリオ一覧</a>
想定されるトラブル
カスタムパーマリンクが適用されない
解決方法
パーマリンクの設定を保存し直す
- WordPress の管理画面で「設定」→「パーマリンク」に移動
- 何も変更せず「変更を保存」をクリック
これにより、リライトルールが適用される。
Q&A
まとめ
add_permastruct()
は、WordPress のパーマリンク構造をカスタマイズする強力な関数です。
カスタム投稿タイプやタクソノミーの URL を変更したい場合に役立ちます。適用後は、必ずパーマリンクの設定を更新する ことで変更を反映させるのを忘れないようにしましょう。
コメント