具体的に言いますと、
カテゴリースラッグ/投稿ID/attachment/ファイル名
となるところを
試しにテーマ Twenty Seventeen を使って、プラグインは Multibyte Patch だけにして、投稿を作り、その投稿へファイル(PDFなど)を添付して見たところ、そのようなURLになりませんでした。
お使いのテーマやプラグインが何であるかも書き込んでいただければコメントが付くかもしれません。(その形式のURLを作り出しているのがテーマやプラグインかもしれませんので。)
gblsmさん回答ありがとうごさいます
私が少し説明不足でした
詳細に説明しますと、パーマリンク設定よりカスタム構造「/%category%/%post_id%」にした上で、
カテゴリーベースを「.」に設定することにより
投稿記事のURLが「ドメイン名/カテゴリースラッグ/投稿ID」となります。
さらにその投稿記事の編集画面の「メディアを追加」から画像やPDFを追加することにより、その追加された画像やPDFのURLが「ドメイン名/カテゴリースラッグ/投稿ID/attachment/ファイル名」となります
このURLを
ドメイン名/カテゴリースラッグ/投稿ID/img(任意の文字列)/ファイル名
や
ドメイン名/カテゴリースラッグ/投稿ID/ファイル名(attachmentを省略)
へ変更したいです。
添付ファイル(attachment.php)のURLをリライトする
このサイトで紹介されている
add_filter('attachment_link', 'pal_change_link', 10, 2 );
function pal_change_link( $link, $id ) {
return home_url("/file/$id/");
}
add_filter('rewrite_rules_array', 'pal_insert_rewrite_rules');
function pal_insert_rewrite_rules( $rules ) {
$newrules = array();
$newrules['file/(\d*)$'] = 'index.php?attachment_id=$matches[1]';
return $newrules + $rules;
}
add_action('wp_loaded', 'pal_flush_rules');
function pal_flush_rules() {
$rules = get_option( 'rewrite_rules' );
if ( ! isset( $rules['file/(\d*)$'] ) ) {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
}
このコードを使用すると、
ドメイン名/file(任意の文字列)/投稿ID/ファイル名
となります。
できれば
ドメイン名/カテゴリースラッグ/投稿ID/img(任意の文字列)/ファイル名
や
ドメイン名/カテゴリースラッグ/投稿ID/ファイル名(attachmentを省略)
へ変更したいので、ご教授いただけますと幸いです
WordPressの仕様上、その形の実現はおそらく不可能だと思います。
パーマリンクの機能として「そのURLを見れば、表示すべきページの種類(どの投稿タイプか、またはタクソノミーページなのか 等)が分かる」という必要があるためです。
つまり、URLから「表示すべきはattachmentページに相当するもの」であると判別できる必要があります。URL内の attachment を別の文字列に変えることは可能ですが、省くことはできません。
省略することで、WordPressがどういうページを表示させてよいのかわからなくなるためです。
例外的に、投稿タイプやタクソノミーが1つしか実装されていない場合はなくても分かるのでカスタマイズして省略することもできなくはない(が、推奨はしない/上級者向けカスタマイズ)ですが、このケースでは対応できません。
のむらけいさん、
実現は難しいのですね。勉強になりました
回答してくださった皆さんありがとうございました