カスタム投稿タイプの記事入力画面から画像をアップすると、添付ファイルのリンクが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のディレクトリ名を変更することができます。
コメント