web-dev-qa-db-ja.com

添付ページのワードプレスの標準として投稿を追加する

添付ファイルのページにメイン投稿に正規名を追加する

添付ファイルのページ(image.php)に現在持っています(All in One Seo Packによって自動的に追加されます)。

<link rel="canonical" href="https://example.com/main-post/image-name" />

そして、この画像が添付されている投稿を指すように変更したいと思います。

<link rel="canonical" href="https://example.com/main-post" />

変更が難しい場合はAll in One Seo Packを無視してもかまいません。また、メイン投稿に標準を追加する方法を簡単に提供することもできます。

1
whitelord

添付ファイルのページのheaderタグに添付された投稿の正規のリンクを挿入する(未テストの)例は次のとおりです。

add_action( 'wp_head', 'wpse_attachment_parent_canonical' );

function wpse_attachment_parent_canonical()
{
    // Only target attachment's pages
    if( ! is_attachment() )
        return;

    $object = get_queried_object();

    // Make sure we're dealing with a WP_Post object
    if ( ! is_a( $object, '\WP_Post' ) )
        return;

    // Only target attachments that are attached to posts
    if( 0 == $object->post_parent )
        return;

    // Output canonical link
    printf(
        '<link rel="canonical" href="%s" />' . PHP_EOL,
        esc_url( get_permalink( $object->post_parent ) )
    );
} 

publish投稿ステータスのオブジェクトにのみ適用されるため、ここではget_canonical_urlフィルタを使用して正規のURLを調整することはできません。添付ファイルは継承投稿ステータスを持ちます。

2
birgire