在WooCommerce / WC Vendor Pro中保存并显示嵌入的视频

时间:2016-10-26 08:56:12

标签: php wordpress woocommerce

我在woocommerce中添加了一个自定义文本字段,并将其显示在WC Vendor pro的前端。因此供应商可以添加youtube或vimeo链接来嵌入他们的电影。

但由于某种原因,我无法将其保存并显示在前端的产品页面中。

目前我在 functions.php

中的代码
// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );

function woo_add_custom_general_fields() {

  global $woocommerce, $post;

  echo '<div class="options_group">';

  // Text Field
woocommerce_wp_text_input( 
  array( 
    'id'          => 'video_url', 
    'label'       => __( 'Your product video link (youtube/vimeo)', 'woocommerce' ), 
    'placeholder' => 'https://',
    'desc_tip'    => 'true',
    'description' => __( 'Copy the Youtube or Vimeo link here', 'woocommerce' ) 
  )
);

  echo '</div>';

}

function woo_add_custom_general_fields_save( $post_id ){

  // Text Field
  $woocommerce_text_field = $_POST['video_url'];
  if( !empty( $woocommerce_text_field ) )
    update_post_meta( $post_id, 'video_url', esc_attr( $woocommerce_text_field ) );

}

并在供应商部分中显示该字段:

<div class="all-100">
        <!-- Media uploader -->
        <div class="wcv-product-media">
            <?php BuddyBoss_BM_Templates::product_media_uploader( $object_id ); ?>  
            <?php woo_add_custom_general_fields( $object_id ); ?>
        </div>

    </div>

现在供应商可以进入该领域。但是保存或显示它不会起作用。我将以下内容添加到产品页面

echo $youtubevideo_code = wp_oembed_get( get_field('video_url') );
// tried this one as well:
echo get_post_meta( $post->ID, 'video_url', true );

感谢任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

假设你使用acf来使用get_field,我想你错过了第二个参数$ post_id,该函数需要知道你想要得到的字段的post id。

echo $youtubevideo_code = wp_oembed_get( get_field('video_url') );

你必须像这样对

global $post; // I don't know where is your script (in the loop ? in a function ?) 

$youtubevideo_code = wp_oembed_get( get_post_meta($post->ID, 'video_url', true )); // can be get_field('video_url, $post->ID);

echo $youtubevideo_code;