web-dev-qa-db-fra.com

ajouter le poste comme canonique pour la pièce jointe page wordpress

la page de pièce jointe devrait avoir canonique ajouté à la publication principale

sur la page de pièce jointe (image.php) je ai actuellement (automatiquement ajouté par All in One Seo Pack):

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

Et je veux le changer pour qu'il pointe vers le post (où cette image est attachée)

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

Vous pouvez ignorer le pack All in One Seo si cela est difficile à changer, et peut-être simplement fournir un moyen d'ajouter le contenu canonique à la publication principale.

1
whitelord

Voici un exemple (non testé) dans lequel nous injectons dans la balise d’en-tête des pages de pièces jointes, le lien canonique de la publication attachée:

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 ) )
    );
} 

Notez que nous ne pouvons pas utiliser le filtre get_canonical_url ici pour ajuster l'URL canonique, car il s'applique uniquement aux objets avec le statut de publication Publier . Les pièces jointes ont le statut de publication .

2
birgire