Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- *
- * Plugin Name: My WooCommerce Video Tab
- *
- */
- if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
- /**
- * My_WooCommerce_Video_Tab
- *
- * @since 1.0
- */
- if ( ! class_exists( 'My_WooCommerce_Video_Tab' ) ) {
- class My_WooCommerce_Video_Tab {
- function __construct(){
- add_action('plugins_loaded', array(&$this, 'hooks') );
- register_activation_hook( __FILE__ , array(&$this , 'install' ) );
- }
- public function hooks(){
- // Arrêter l'execution du plugin si WooCommerce n'exite plus.
- if( !class_exists( 'Woocommerce' ) )
- return;
- // WooCommerce étant disponible il est temps de hooker !
- add_filter( 'woocommerce_product_tabs' , array(&$this ,'video_tabs') );
- add_filter( 'woocommerce_product_data_tabs' , array(&$this, 'video_data_tabs') );
- add_action( 'woocommerce_product_data_panels', array(&$this, 'video_data_panels') );
- add_action( 'woocommerce_process_product_meta', array(&$this, 'process_video_meta') );
- }
- public function install(){
- // Ne pas installer le plugin si WooCommerce n'est pas installé.
- if( !class_exists( 'Woocommerce' ) )
- wp_die('WooCommerce extension not found !');
- }
- /**
- * video_tabs
- *
- * Modifie le tableau des onglets par défaut de la fiche produit.
- * L'ajout d'un onglet se fait par l'ajout d'un tableau comprenant son nom (label), sa position (priority)
- * Et son callback (la fonction à appeler)
- * @version 1.0
- * @since 1.0
- *
- * @access public
- * @return array $tabs
- */
- public function video_tabs($tabs){
- global $post;
- $youtube_url = get_post_meta( $post->ID, '_product_youtube_url' , true );
- // Ajout d'un onglet "vidéo" à notre fiche produit seulement si nécessaire.
- if(!empty($youtube_url) && false !== $GLOBALS['youtube_embed'] = wp_oembed_get( $youtube_url ) ) :
- $tabs['video'] = array(
- 'title' => "Vidéo Produit",
- 'priority' => 30,
- 'callback' => array( __CLASS__ , 'display_video' )
- );
- endif;
- return $tabs;
- }
- /**
- * display_video
- *
- * Affiche la vidéo du produit.
- * @version 1.0
- * @since 1.0
- *
- * @access static
- * @return Youtube Embed
- */
- static public function display_video(){
- echo $GLOBALS['youtube_embed'];
- }
- /**
- * video_data_tabs
- *
- * Affiche un nouvel onglet dans le back-office de la fiche produit
- *
- * @version 1.0
- * @since 1.0
- *
- * @access public
- * @return $datatabs (la liste de tous les onglets disponibles)
- */
- public function video_data_tabs($datatabs){
- $datatabs['video_data_tabs'] = array(
- 'label' => 'Vidéo produit',
- 'target' => 'video_data_tabs',
- 'class' => array(),
- );
- return $datatabs;
- }
- /**
- * video_data_panels
- *
- * Affiche le contenu de notre nouvel onglet. l'ID html correspond à la valeur target décrite plus haut
- * On a recourt à l'API WooCommerce pour générer le champ texte nécessaire.
- * @version 1.0
- * @since 1.0
- *
- * @access public
- * @return html
- */
- public function video_data_panels(){
- ?>
- <div id="video_data_tabs" class="panel woocommerce_options_panel">
- <?php
- echo '<div class="options_group">';
- // Youtube URL
- woocommerce_wp_text_input( array( 'id' => '_product_youtube_url', 'label' => 'Vidéo Produit', 'placeholder' => 'http://', 'description' => 'Saisir ici l\'URL de la vidéo' ) );
- echo '</div>';
- ?>
- </div>
- <?php
- }
- /**
- * process_video_meta
- *
- * Sauvegarde en base de données de la valeur de notre vidéo.
- * @version 1.0
- * @since 1.0
- *
- * @access public
- * @return void
- */
- public function process_video_meta( $post_id ){
- update_post_meta( $post_id, '_product_youtube_url', sanitize_text_field( $_POST['_product_youtube_url'] ) );
- }
- }
- $load = new My_WooCommerce_Video_Tab();
- }
Advertisement
Add Comment
Please, Sign In to add comment