web-dev-qa-db-fra.com

Comment lier les vignettes de galeries à différentes URL à l'aide de la galerie native wp?

Est-il possible de lier chaque vignette de la galerie si j'utilise la galerie native intégrée à WordPress?

3
user16465

Vous pouvez filtrer 'post_gallery'. Si vous ne retournez pas une chaîne vide, WordPress utilisera votre valeur de retour et ne construira pas la galerie avec le code natif. Mais alors vous devez reconstruire le code de la galerie entière…

La deuxième option: masque le shortcode de la galerie et filtre juste 'wp_get_attachment_link'.

Exemple de code (non testé, juste une idée):

add_action( 'after_setup_theme', 'wpse_53368_replace_gallery_shortcode' );

/**
 * Replace the default shortcode handlers.
 *
 * @return void
 */
function wpse_53368_replace_gallery_shortcode()
{
    remove_shortcode( 'gallery' );
    add_shortcode( 'gallery', 'wpse_53368_gallery_shortcode' );
}

function wpse_53368_gallery_shortcode( $attr )
{
    // Add a filter for attachment links:
    add_filter( 'wp_get_attachment_link', wpse_53368_gallery_link_filter, 10, 6 );

    // Let WordPress create the regular gallery …
    $gallery = gallery_shortcode( $attr );

    // Remove the filter for attachment links:
    remove_filter( 'wp_get_attachment_link', wpse_53368_gallery_link_filter, 10 );

    return $gallery;
}
function wpse_53368_gallery_link_filter( $full_link, $id, $size, $permalink, $icon, $text )
{
    // Inspect the attachment by its ID and build a link.
    return $link;
}

Voir Comment puis-je ajouter un champ URL à la fenêtre des pièces jointes? pour un exemple montrant comment stocker une autre URL dans les métadonnées de la pièce jointe.

1
fuxia