カスタム投稿タイプの記事入力画面から画像をアップすると、添付ファイルのリンクが404となり繋がらなくなる現象がありました。
確認バージョンは、WordPress 4.7.5 です。
すべての環境で同じになるかまでは検証できていませんが、以前にも「Custom Upload Dir」プラグインと併用するとNot Foundになる現象がありました。
Custom Upload Dirとカスタム投稿タイプ指定でNot Foundになる
管理画面のメディアから「表示」リンクのURLを確認すると
http://example.com/投稿タイプ名/ポスト名/画像のポスト名
のようになり、リンクがつながらない状態でした。
リンクの間にattachmentと入れれば、表示することは可能でした。
http://example.com/投稿タイプ名/ポスト名/attachment/画像のポスト名
解決するためにリライト周りを色々といじってみたのですが、なかなか解決することができませんでした。
が、添付ファイルのページリンクを書き換えるという方法で解決することができました。
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();
}
}この処理を入れることにより、カスタム投稿タイプ関係なく下記のようなURLとなります。
http://example.com/file/ポストID/
3行目、8行目、14行目にある「file」という文言を変更することでattachmentのディレクトリ名を変更することができます。



コメント