it-swarm.com.de

Entfernen Sie den Hyperlink auf dem Galerie-Shortcode

Ich verwende einen Galerie-Shortcode in meiner index.php (Themenverzeichnis), um 3 Kästchen mit Bildern anzuzeigen. Die Bilder werden von meinen Medien abgerufen.

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

Standardmäßig sind diese Bilder mit einem Hyperlink versehen. Wenn ich darauf klicke, wird eine Seite geöffnet, auf der die größere Version dieses Bildes angezeigt wird. Ich möchte nicht, dass das passiert. Gibt es eine Option, die ich ändern muss, damit es keinen Hyperlink gibt?

Ich bin neu in WordPress, bitte seien Sie nicht grob auf mich.

1
Leandro Garcia

Aktualisieren:

Es sieht so aus, als gäbe es doch ein Attribut link="none" ;-)

Zum Beispiel:

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

Wir müssen das Rad also nicht neu erfinden, wie in meinen vorherigen Antworten ;-)

Previous: Plugin zur Bearbeitung von link="no" im Galerie-Shortcode:

Hier ist ein Demo-Plugin, mit dem Sie die Option zum Entfernen der Bildverknüpfungen in der Galerie hinzufügen können.

Sie können die Option link="no" verwenden, um die Links zu entfernen. Beispiel:

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

Erstellen Sie den Ordner /wp-content/plugins/gallery-without-links/ und fügen Sie die Datei gallery-without-links.php hinzu, die den folgenden Code enthält:

<?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;

Vorherige Antwort:

Hier ist eine Idee:

Der Galerie-Shortcode-Rückruf verwendet die Funktion wp_get_attachment_link(), um den Link zu jedem Bild in der Galerie zu erstellen. Wir können daher den wp_get_attachment_link-Filter verwenden, um die <a>-Tags zu entfernen.

Sie können dann Ihr Code-Snippet folgendermaßen ändern:

<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>

woher:

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