FlexSlider与WordPress库

时间:2013-04-04 05:59:15

标签: wordpress flexslider

如何让FlexSlider使用WordPress Gallery?

我正在创建自定义主题,理想情况下,我希望主题中的每个图库都自动转换为FlexSlider图像旋转器,而不使用其他插件。

3 个答案:

答案 0 :(得分:1)

在类似问题上查看t31os答案:How to customise the output of the WP image gallery shortcode from a plugin?

你要做的就是用你的返回$output覆盖核心gallery_shortcode函数(wp-includes / media.php的第702行),将你的代码或类似代码放在你主题中的functions.php中。

答案 1 :(得分:0)

我知道您说您不想使用其他插件,但我建议您尝试使用图库扩展程序尝试高级自定义字段插件。

通过它可以很容易地创建带有自己标记的自定义库。 Check it out here

它确实解决了我整合壁画灯箱的问题,就像我想要的那样。只是一些示例输出代码,向您展示如何使用自定义字段:

<div id="slider" class="flexslider">
    <ul class="slides">
        <?php foreach( $images as $image ): ?>
            <li>
                <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
                <p class="flex-caption"><?php echo $image['caption']; ?></p>
            </li>
        <?php endforeach; ?>
    </ul>

答案 2 :(得分:0)

我知道这已经有6年的历史了,但是最近我需要在WP 5.0+安装上执行此操作,并且由于块编辑器aka而被证明比预期的要难。古腾堡。

我通过使用parse_blocksrender_block手动重新渲染the_content来解决性能问题,可能会导致性能显着下降(如果我错了,请纠正我)。

这出现在您主题的functions.php中:

<?php

function filter_gallery_blocks($content) {
    global $post;

    if ( has_blocks( $post->post_content ) ) {
        $blocks = parse_blocks( $post->post_content );
        $new_content = '';

        foreach ( $blocks as $key => $block ) {
            if ( $block['blockName'] === 'core/gallery' ) {
                $rendered_block = render_block($block);

                // do whatever replacement you like with the block HTML

                // in case of Flexslider I needed the following 3 lines
                $rendered_block = str_replace('<figure>', '', $rendered_block);
                $rendered_block = str_replace('</figure>', '', $rendered_block);
                $rendered_block = str_replace('wp-block-gallery', 'wp-block-gallery slides', $rendered_block);

                $new_content .= '<div class="gallery">'.$rendered_block.'</div>';
                continue;
            }

            // else just pass through
            $rendered_block = render_block($block);
            $new_content .= $rendered_block;
        }

        return $new_content;
    }
}
add_filter('the_content', 'filter_gallery_blocks', -5);

?>