WordPress - 如何禁用function.php中media.php使用的过滤器?

时间:2013-10-22 00:00:25

标签: php html css wordpress

在WordPress中,如果我使用此代码将“照片库”添加到我的主题模板中:

              <?php echo do_shortcode('[gallery link="file"]'); ?>

然后WordPress Core将“use_default_gallery_style”导致其设置为“ true ”:

  

wp-include / media.php第755行的开头如下:

if ( apply_filters( 'use_default_gallery_style', true ) )
    $gallery_style = "
    <style type='text/css'>
        #{$selector} {
            margin: auto;
        }
        #{$selector} .gallery-item {
            float: {$float};
            margin-top: 10px;
            text-align: center;
            width: {$itemwidth}%;
        }
        #{$selector} img {
            border: 2px solid #cfcfcf;
        }
        #{$selector} .gallery-caption {
            margin-left: 0;
        }
        /* see gallery_shortcode() in wp-includes/media.php */
    </style>";
$size_class = sanitize_html_class( $size );
$gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
$output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );

问题是:我的页面的HTML代码不会被在线HTML验证器验证,因为WordPress Core在HTML页面中打印CSS,它不是使用单独的CSS文件,这是正确的方式做。

CODE WordPress输出到HTML看起来像:

<style type='text/css'>
            #gallery-1 {
                margin: auto;
            }
            #gallery-1 .gallery-item {
                float: left;
                margin-top: 10px;
                text-align: center;
                width: 33%;
            }
            #gallery-1 img {
                border: 2px solid #cfcfcf;
            }
            #gallery-1 .gallery-caption {
                margin-left: 0;
            }
            /* see gallery_shortcode() in wp-includes/media.php */
        </style>

我现在的解决方案:

我知道不推荐编辑WordPress CORE文件!但我编辑了wp-include / media.php第755行

发件人:

     if ( apply_filters( 'use_default_gallery_style', true ) )

     if ( apply_filters( 'use_default_gallery_style', false ) )

我已将此更新/添加到我的style.css:

        #gallery-1 {
            margin: auto;
        }
        #gallery-1 .gallery-item {
            float: left;
            margin-top: 10px;
            text-align: center;
            width: 33%;
        }
        #gallery-1 img {
            border: 2px solid #cfcfcf;
        }
        #gallery-1 .gallery-caption {
            margin-left: 0;
        }

我的问题:如何使用function.php设置过滤器:use_default_gallery_style为false?

如何在function.php中编写一个钩子,函数或动作来删除或设置use_default_gallery_style为false?

最好的办法是什么?

我是新手,不想乱用WordPress CORE文件,如果有人可以帮助我或指导我使用此功能,那就太棒了。

提前致谢:D

1 个答案:

答案 0 :(得分:3)

尝试:

add_filter( 'use_default_gallery_style', '__return_false' );

如此处所示:http://wordpress.org/ideas/topic/wordpress-media-gallery-please-that-cant-be-true/page/6