ドメイン/user名
著者アーカイブのパーマリンクは、
ドメイン/author/user名
になります。(パーマリンクをデフォルトから変えている場合)
ドメイン/author/555maru
なら、おそらく適切に表示されると思います。
返信有難うございます。
そこは、ドメイン/user名 で表示するようになっているとしか申し上げられないのですが、(わたしが作成したものではなく、わからないので)他のユーザーがちゃんと表示されるのに、特定のユーザーだけがそうなので、なにか数字からはじまるIDがマズいとかがあるのかなと思った次第です。
固定ページに画像が表示されていたので、attachmentが関係しているような気もします。
ユーザーのスラッグ(ユーザー名)と、attachmentのページのスラッグが、同じ文字列なんじゃないでしょうか。
返信有難うございます。
>ユーザーのスラッグ(ユーザー名)と、attachmentのページのスラッグが、
>同じ文字列なんじゃないでしょうか。
これで間違いないです。
わたしが最近の投稿に555maru.jpgという写真をアップロードしているせいでした。
attachmentのページスラッグは、パーマリンクをカスタム構造にしていると、
ドメイン/ファイル名
でも表示されるんですね。これは困りました。
attachmentのページを無くすとか、authorテンプレートを最優先にする、みたいなことは可能なのでしょうか?
attachment.phpを作成して、author.phpの内容をincludeしてみましたが、ユーザーページへは飛んだものの、ユーザーメタの内容は読み込んでくれませんでした。
そもそもが画像だと判断されているので、無理なんですね。
現在アップロードするファイル名・ファイルタイトルを自動的に変更して複雑化することにシフトしています。
function make_filename_hash($filename) {
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);
これでファイル名は変わりましたが、ファイルのタイトルの変え方がわかりません。
「画像ファイルタイトル」がそのままページスラッグになるようなので、「ファイル名」を変えても意味無かったです。
「画像ファイルタイトル」がそのままページスラッグになるようなので、
WordPress本体の wp_insert_attachment 関数が添付ファイルのページを作る時に、そうなります。実際には、wp_insert_attachment を呼び出す側(例えば media.php の中、media_handle_upload 関数)が、ファイル名の拡張子を除いた部分をタイトルにしてしまいます。
その後、wp_insert_attachment が wp_insert_post 関数を呼び出して、その中でスラッグにタイトルを自動的に割り当てます。(post.php の3172行目から。$post_name がスラッグ。)
$post_name = sanitize_title($post_title);
この sanitize_title 関数と同名のフィルターを使えばスラッグを変更できますが、添付ファイル以外の投稿や固定ページ等のスラッグも対象になってしまうので、不適当かもしれません。
返信有難うございます。
投稿はいいのですけど、固定ページでスラッグを任意に指定していたとしても書き換わってしまいそうですね?
あとは、
・すべての画像ページのスラッグのみに、attachment- をつける
・画像テンプレートの優先順位を一番下に下げる
とかの記事を探してますけどなかなかないです。。
function wpd_attachment_link( $link, $post_id ){
$post = get_post( $post_id );
return home_url( 'attachment-' . $post->post_title );
}
add_filter( 'attachment_link', 'wpd_attachment_link', 20, 2 );
これで画像ページのページスラッグは変更できましたが、管理画面の設定で%postname%としているので、ページスラッグではなくタイトルを読みにいってしまいますね。
add_action( 'add_attachment', 'wpse_70093_modify_uploaded_file_title' );
function wpse_70093_modify_uploaded_file_title( $attachment_ID )
{
$the_post = array();
$the_post['ID'] = $attachment_ID;
$the_post['post_name'] = 'attachment-'.$attachment_ID;
wp_update_post( $the_post );
}
以上で添付ファイルページの%postname%の変更がうまくいきました。
文法的に正しいかはわかりませんが。