wordpress Woocommerce产品视频内容

3lxsmp7m  于 2023-05-16  发布在  WordPress
关注(0)|答案(2)|浏览(214)

我正在尝试显示产品的视频内容。不想禁用产品缩略图,但只要产品图库中有可用的视频内容,就显示视频内容。视频内容将上传到媒体库和Youtube。我试过几种方法,但都不管用。
1.**使用ACF:**我创建了自定义字段product_video,字段类型为oembed。我使用下面的代码。没有错误消息,但视频不显示或不显示。

add_action( 'woocommerce_before_shop_loop_item_title', 'action_template_loop_product_thumbnail', 9 );
function action_template_loop_product_thumbnail() {
    global $product;

    $file = get_field('product_video', $product->get_id());
    // $file2 = get_field('product_video_text', $product->get_id());

    if( isset($file['url']) && ! empty($file['url']) ) {
        remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );

        echo '<video width="200" muted loop autoplay src="' . $file['url'] . '"></video>';
        // echo $file2 ;
    }
}

为什么看不出来?
2)**Use product video plugin .**它在前端工作,但文件afpv_front.js中有一个错误Uncaught TypeError: jQuery(...).slick is not a function。我排队的slick.js认为它会纠正这个问题,但它没有。它带来了更多的错误。

function enqueue_slick() {
        if(is_shop() || is_product() || is_product_category() ) {  
        wp_enqueue_script( 'slick-css', get_stylesheet_directory_uri() . '/assets/js/slick/slick.css'); //do not mind the relevancy of the folder name, just a quick fix for now
        wp_enqueue_script( 'slick-theme-css', get_stylesheet_directory_uri() . '/assets/js/slick/slick-theme.css');
        wp_enqueue_script( 'slick-min-css', get_stylesheet_directory_uri() . '/assets/js/slick/slick.min.js');
        }
 }
        add_action( 'wp_enqueue_scripts', 'enqueue_slick' );

它会产生如下错误:Uncaught SyntaxError: expected expression, got '.'来自slick.css
Uncaught SyntaxError: illegal character U+0040来自slick-theme.css:1
Error: Promised response from onMessage listener went out of scope
为产品添加视频内容的正确方法是什么?

qvtsj1bj

qvtsj1bj1#

对于ACF的第一个选项-您是否尝试获取$file变量中的内容?如果您没有收到错误,则可能是错误的密钥(例如,不是“url”)或空“product_video”字段。作为一个快速测试,您可以在'if'语句之前使用print_r($file)进行测试。
对于第二个选项-我可以建议您将脚本设置为依赖于jquery,如:

wp_enqueue_script( 'slick-min-css', get_stylesheet_directory_uri() . '/assets/js/slick/slick.min.js', array('jquery') );

同时,样式的连接应该使用wp_enqueue_style,而不是wp_enqueue_script

llycmphe

llycmphe2#

我也在为同样的问题而挣扎,在他们的网站上我看到了同样的错误。没有尝试过ACF。
但是当我在关闭标签之前在我的头中添加这个打击脚本时,它就会起作用。

<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>

不是很好,但它为我解决了这个问题。
Screenshot to add a script in header
我也尝试了这个WooCommerce Product Video Plugin这个插件,看起来他们都使用了相同的光滑滑块,但这对我来说在商店和单一产品页面上都很好。

相关问题