0

你如何让 FlexSlider 与 WordPress 画廊一起工作?

我正在创建一个自定义主题,理想情况下,我希望主题中的每个画廊都自动变成 FlexSlider 图像旋转器,而无需使用其他插件。

4

3 回答 3

1

看看 t31os 对类似问题的回答:如何从插件自定义 WP 图片库短代码的输出?.

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

于 2014-06-10T11:45:43.030 回答
0

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

使用您自己的标记创建自定义画廊非常容易。在这里查看

它确实解决了我想要的集成壁画灯箱的问题。只是一些示例代码,向您展示如何使用自定义字段:

<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>
于 2013-05-22T18:33:11.893 回答
0

我知道这已经 6 岁了,但我最近需要在 WP 5.0+ 安装上执行此操作,并且由于块编辑器(又名)的原因,它比预期的要难。古腾堡。

parse_blocks我通过使用和render_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);

?>
于 2019-10-12T10:01:59.297 回答