Php 在Wordpress中将gallery短代码输出为引导列

Php 在Wordpress中将gallery短代码输出为引导列,php,wordpress,twitter-bootstrap,gallery,Php,Wordpress,Twitter Bootstrap,Gallery,如何更改库短代码的输出?在post中,我们得到: [gallery ids="134,127,109"] 我需要像这样的东西: <div class="row gallery"> <div class="col-md-3"> <a href="photo.jpg" data-gallery="gallery"> <img src="photo.jpg" class="img-responsive" /&g

如何更改库短代码的输出?在post中,我们得到:

[gallery ids="134,127,109"]
我需要像这样的东西:

<div class="row gallery">
    <div class="col-md-3">
        <a href="photo.jpg" data-gallery="gallery">
            <img src="photo.jpg" class="img-responsive" />
        </a>
    </div>
    . . . 
</div>
这必须在_内容内工作,因此必须更换gallery filter功能。找到了一些关于它的主题,但都太旧了,所以功能发生了变化。如果函数尊重gallery中选择的列数并将其更改为bootstrap类,也会很好。 有人能帮我吗?

这应该能帮到你:

add_filter( 'post_gallery', 'bootstrap_gallery', 10, 3 );

function bootstrap_gallery( $output = '', $atts, $instance )
{
    $atts = array_merge(array('columns' => 3), $atts);

    $columns = $atts['columns'];
    $images = explode(',', $atts['ids']);

    $col_class = 'col-md-4'; // default 3 columns
    if ($columns == 1) { $col_class = 'col-md-12';}
    else if ($columns == 2) { $col_class = 'col-md-6'; }
    // other column counts

    $return = '<div class="row gallery">';

    $i = 0;

    foreach ($images as $key => $value) {

        if ($i%$columns == 0 && $i > 0) {
            $return .= '</div><div class="row gallery">';
        }

        $image_attributes = wp_get_attachment_image_src($value, 'full');

        $return .= '
            <div class="'.$col_class.'">
                <a data-gallery="gallery" href="'.$image_attributes[0].'">
                    <img src="'.$image_attributes[0].'" alt="" class="img-responsive">
                </a>
            </div>';

        $i++;
    }

    $return .= '</div>';

    return $return;
}
这将有助于你:

add_filter( 'post_gallery', 'bootstrap_gallery', 10, 3 );

function bootstrap_gallery( $output = '', $atts, $instance )
{
    $atts = array_merge(array('columns' => 3), $atts);

    $columns = $atts['columns'];
    $images = explode(',', $atts['ids']);

    $col_class = 'col-md-4'; // default 3 columns
    if ($columns == 1) { $col_class = 'col-md-12';}
    else if ($columns == 2) { $col_class = 'col-md-6'; }
    // other column counts

    $return = '<div class="row gallery">';

    $i = 0;

    foreach ($images as $key => $value) {

        if ($i%$columns == 0 && $i > 0) {
            $return .= '</div><div class="row gallery">';
        }

        $image_attributes = wp_get_attachment_image_src($value, 'full');

        $return .= '
            <div class="'.$col_class.'">
                <a data-gallery="gallery" href="'.$image_attributes[0].'">
                    <img src="'.$image_attributes[0].'" alt="" class="img-responsive">
                </a>
            </div>';

        $i++;
    }

    $return .= '</div>';

    return $return;
}

@bitWorking的解决方案非常好-我知道它只是一个快速提示和启动代码,所以这不是在抱怨缺少的东西。我只是对它做了一些修改,以修复/添加困扰我的东西-也许它对某人有用:

修复/添加了“缺失”功能:

通过WordPress gallery面板生成用户设置的缩略图大小。 使用全尺寸图像是对带宽的浪费。 若原始图像的大小不一样,库可能会显示不好。 如果CMS用户设置了特定的缩略图大小,而gallery会显示不同的大小/比例,那么他/她可能会感到困惑。 通过WordPress gallery面板生成用户设置的缩略图alt属性。 使通过WordPress gallery面板设置的缩略图链接正确工作无、附件页、文件,以维护面板的功能,并且不会混淆CMS用户。
@bitWorking的解决方案非常好-我知道它只是一个快速提示和启动代码,所以这不是在抱怨缺少的东西。我只是对它做了一些修改,以修复/添加困扰我的东西-也许它对某人有用:

修复/添加了“缺失”功能:

通过WordPress gallery面板生成用户设置的缩略图大小。 使用全尺寸图像是对带宽的浪费。 若原始图像的大小不一样,库可能会显示不好。 如果CMS用户设置了特定的缩略图大小,而gallery会显示不同的大小/比例,那么他/她可能会感到困惑。 通过WordPress gallery面板生成用户设置的缩略图alt属性。 使通过WordPress gallery面板设置的缩略图链接正确工作无、附件页、文件,以维护面板的功能,并且不会混淆CMS用户。
你试过什么?哪些功能发生了变化?我给你一个提示:使用我已经尝试过的remove_shortcode/add_shortcode来使用我自己的函数,但是旧的例子告诉我要按特定的行从原始media.php复制一些东西,但在我的文件中,我认为这是不对的。找到了函数get\u post\u gallery,但这并没有返回列数,我想你尝试了什么?哪些功能发生了变化?我给你一个提示:使用我已经尝试过的remove_shortcode/add_shortcode来使用我自己的函数,但是旧的例子告诉我要按特定的行从原始media.php复制一些东西,但在我的文件中,我认为这是不对的。找到函数get\u post\u gallery,但这不是返回列数。我想它会覆盖默认的worpress筛选器吗?它会覆盖默认的WordPress gallery。只需测试一下。@bitWorking我收到通知:未定义变量:col_class@soniamaklouf我编辑了这篇文章。现在有一个默认的3列定义。它会覆盖默认的worpress筛选器吗?它会覆盖默认的WordPress gallery..只需测试一下。@bitWorking我收到通知:未定义变量:col_class@soniamaklouf我编辑了这篇文章。现在有一个默认的3列定义。