web-dev-qa-db-fra.com

Supprimer le lien hypertexte sur le shortcode de la galerie

J'utilise un shortcode de galerie dans mon index.php (répertoire de thèmes) pour afficher 3 boîtes d'images. Les images sont extraites de mon support.

<div class="well well-clear" style="padding-bottom: 0; margin-bottom: 0;">
<?php echo do_shortcode('[gallery ids="165,166,167"]'); ?>
</div>

Par défaut, ces images ont un lien hypertexte qui indique que lorsque je clique dessus, une page s'ouvre et affiche la version plus grande de cette image. Je ne veux pas que cela se produise. Y a-t-il une option que je dois modifier pour éviter les hyperliens?

Je suis nouveau sur WordPress, s'il vous plaît, ne soyez pas dur avec moi.

1
Leandro Garcia

Mettre à jour:

Il semble qu'il existe un attribut link="none" après tout ;-)

Par exemple:

[gallery link="none" ids="165,166,167"]

Donc, nous n'avons pas besoin de réinventer la roue, comme dans mes réponses précédentes ;-)

Previous: Plugin pour gérer link="no" dans le shortcode de la galerie:

Voici un plugin de démonstration pour ajouter l’option permettant de supprimer les liens d’image dans la galerie.

Vous pouvez utiliser l'option link="no" pour supprimer les liens, par exemple:

[gallery link="no" ids="165,166,167"]

Créez le dossier /wp-content/plugins/gallery-without-links/ et ajoutez-y le fichier gallery-without-links.php, contenant le code suivant:

<?php
/**
 * Plugin Name: Gallery without links
 * Plugin URI: http://wordpress.stackexchange.com/a/130349/26350
 * Description: Gallery with the link='no' option to remove links.
 */

/**
 * Init the WPSE_No_Gallery_Links class
 */
if( ! class_exists( 'WPSE_No_Gallery_Links' ) ):

    add_action( 'init', array( 'WPSE_No_Gallery_Links', 'get_instance' ) );

    class WPSE_No_Gallery_Links
    {
        static private $instance    = NULL;
        protected $nrofimgs         = 0;
        protected $counter      = 0;

        public function __construct()
        {
            add_filter( 'shortcode_atts_gallery', array( $this, 'shortcode_atts_gallery' ) );
        }

        static public function get_instance() 
        {        
            if ( NULL === self :: $instance )
               self :: $instance = new self;

            return self :: $instance;
        }


        public function wp_get_attachment_link( $link ){
            $this->counter++;
            if( $this->counter >= $this->nrofimgs )
            {
                $this->counter = 0;
                remove_action( 'wp_get_attachment_link', array( $this, 'wp_get_attachment_link' ) );
            }
            return strip_tags( $link, '<img>' );
        }

        public function shortcode_atts_gallery( $atts ) {
            if( 'no' === $atts['link'] )
            {
                if( isset( $atts['include'] ) )
                {
                    $this->nrofimgs = count( explode( ',', $atts['include'] ) );    
                    add_action( 'wp_get_attachment_link', array( $this, 'wp_get_attachment_link' ) );
                }
            }
            return $atts;
        }
    } // end of class

endif;

Réponse précédente:

Voici une idée:

Le rappel du code court de la galerie utilise la fonction wp_get_attachment_link() pour générer le lien vers chaque image de la galerie. Nous pouvons donc utiliser le filtre wp_get_attachment_link pour supprimer les balises <a>.

Vous pouvez ensuite modifier votre extrait de code en:

<div class="well well-clear" style="padding-bottom: 0; margin-bottom: 0;">
    <?php     
       add_action( 'wp_get_attachment_link', 'custom_wp_get_attachment_link' );
       echo do_shortcode('[gallery ids="165,166,167"]'); 
       remove_action( 'wp_get_attachment_link', 'custom_wp_get_attachment_link' );
    ?>
</div>

où:

/**
 * Strip all tags except the <img> tag
 */
function custom_wp_get_attachment_link( $link )
{
    return strip_tags( $link, '<img>' );
}
3
birgire