删除图库快捷代码上的超链接

时间:2014-01-19 作者:Leandro Garcia

我在索引中使用了库短代码。php(主题目录)显示3个图像框。这些图像是从我的媒体中提取的。

<div class="well well-clear" style="padding-bottom: 0; margin-bottom: 0;">
<?php echo do_shortcode(\'[gallery ids="165,166,167"]\'); ?>
</div>
默认情况下,这些图像有一个超链接,当我单击它时,将打开一个页面并显示此图像的更大版本。我不想发生这种事。是否有任何选项需要修改以使其不超链接?

我是WordPress的新手,请不要对我粗暴。

2 个回复
最合适的回答,由SO网友:birgire 整理而成

更新:

似乎存在一个属性link="none" 毕竟;-)

例如:

[gallery link="none" ids="165,166,167"]
因此,我们不需要像我之前的回答那样重新发明轮子;-)

上一个:要处理的插件link="no" 在gallery短代码中:

这里有一个演示插件,可以添加删除gallery中图像链接的选项。

您可以使用link="no" 删除链接的选项,例如:

[gallery link="no" ids="165,166,167"]
创建文件夹/wp-content/plugins/gallery-without-links/ 并添加文件gallery-without-links.php ,包含以下代码:

<?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;
上一个答案:这里有一个想法:

库快捷码回调正在使用wp_get_attachment_link() 函数生成指向库中每个图像的链接。因此,我们可以使用wp_get_attachment_link 过滤以去除<a> 标签。

然后,您可以将代码段修改为:

<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>
其中:

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

SO网友:Goma

我刚刚遇到了一个类似的问题,我使用了针对ul应用的CSSpointer-events: none;.我正在使用gallery块,我当前的Wordpress版本允许在每个块上直接引入自定义CSS,所以我就是这么做的。无需进行CSS搜索。

结束

相关推荐

shortcode not working

我正在制作woocommerce的内容产品,并在模板中作为echo do_shortcode (\'[product_attribute attribute=\"Grams\"]\'); 其中Grams作为属性在我的后端,它有值,但没有输出任何内容。这是一个错误的查询还是我需要做其他事情?