<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Produits - Themespress</title>
	<atom:link href="https://themespress.ca/sujets/produits/feed/" rel="self" type="application/rss+xml" />
	<link>https://themespress.ca</link>
	<description>Des tutoriels et ressources WordPress</description>
	<lastBuildDate>Sat, 07 May 2022 18:14:52 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://themespress.ca/wp-content/uploads/2020/10/cropped-Favicon-Themepress.ca_-32x32.png</url>
	<title>Produits - Themespress</title>
	<link>https://themespress.ca</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ajouter une métadonnée (Dernières mises à jour) &#8211; Produit Woocommerce</title>
		<link>https://themespress.ca/ajouter-une-metadonnee-dernieres-mises-a-jour-produit-woocommerce/</link>
					<comments>https://themespress.ca/ajouter-une-metadonnee-dernieres-mises-a-jour-produit-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Sat, 07 May 2022 18:07:33 +0000</pubDate>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Produits]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=5838</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row vc_row-fluid"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Nous avons dans ce tutoriel, eu l&#8217;idée de créer une nouvelle metabox WordPress pour nos produits de téléchargements WooCommerce.</p>
<p>Notre donnée nous permettrait par exemple d&#8217;afficher la date <span class="corrected-phrase ng-star-inserted" data-end="218" data-originaltext="que " data-start="215" data-text="où"><span class="corrected-phrase__displayed-text corrected-phrase__displayed-text_bubbled" data-group="AutoCorrected" data-suggestions="1" data-type="Grammar">où</span></span> le nombre de jours que les mises à jour du produit ont été fait.</p>
<p>Par exemple vous vendez des fichiers téléchargeables. Vous souhaitez, donc, afficher à vos clients la date <span class="phrase-bubble__suggestion-label ng-tns-c88-3 phrase-bubble__suggestion-label_active phrase-bubble__suggestion-label_only-one ng-star-inserted"><span class="ng-tns-c88-3 ng-star-inserted">où</span></span> la dernière version du produit a été mise en ligne.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Créer une classe pour ajouter une metabox WordPress</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Comme vous allez voir, notre metabox a un champ date avec le format par défaut.</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-5848774" class="ts-enlighterjs-container-single-enabled  " style="width: 100%;  margin-top: 0px; margin-bottom: 0px;" data-enlighter-doubleclick="true" data-enlighter-windowbutton="true" data-enlighter-windowtext="New Window" data-enlighter-rawbutton="true" data-enlighter-rawtext="RAW Code" data-enlighter-infobutton="false" data-enlighter-infotext="EnlighterJS" data-enlighter-indent="2"><pre id="ts-enlighterjs-pre-5848774" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="php" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">// Meta Box Class: Woocommerce Product Update
class woocommerceproductupMetabox {

	private $screen = array(
		&#039;product&#039;,
	);

	private $meta_fields = array(
		array(
			&#039;label&#039; =&gt; &#039;Recent updates for this product ?&#039;,
			&#039;id&#039; =&gt; &#039;woocommerce-update-product&#039;,
			&#039;default&#039; =&gt; &#039;Aujourdhui&#039;,
			&#039;type&#039; =&gt; &#039;date&#039;,
		),
	);

	public function __construct() {
		add_action( &#039;add_meta_boxes&#039;, array( $this, &#039;add_meta_boxes&#039; ) );
		add_action( &#039;save_post&#039;, array( $this, &#039;save_fields&#039; ) );
	}

	public function add_meta_boxes() {
		foreach ( $this-&gt;screen as $single_screen ) {
			add_meta_box(
				&#039;woocommerceproductup&#039;,
				__( &#039;Woocommerce Product Update&#039;, &#039;textdomain&#039; ),
				array( $this, &#039;meta_box_callback&#039; ),
				$single_screen,
				&#039;normal&#039;,
				&#039;high&#039;
			);
		}
	}

	public function meta_box_callback( $post ) {
		wp_nonce_field( &#039;woocommerceproductup_data&#039;, &#039;woocommerceproductup_nonce&#039; );
		$this-&gt;field_generator( $post );
	}

	public function field_generator( $post ) {
		$output = &#039;&#039;;
		foreach ( $this-&gt;meta_fields as $meta_field ) {
			$label = &#039;&lt;label for=&quot;&#039; . $meta_field[&#039;id&#039;] . &#039;&quot;&gt;&#039; . $meta_field[&#039;label&#039;] . &#039;&lt;/label&gt;&#039;;
			$meta_value = get_post_meta( $post-&gt;ID, $meta_field[&#039;id&#039;], true );
			if ( empty( $meta_value ) ) {
				if ( isset( $meta_field[&#039;default&#039;] ) ) {
					$meta_value = $meta_field[&#039;default&#039;];
				}
			}
			switch ( $meta_field[&#039;type&#039;] ) {
				default:
					$input = sprintf(
						&#039;&lt;input %s id=&quot;%s&quot; name=&quot;%s&quot; type=&quot;%s&quot; value=&quot;%s&quot;&gt;&#039;,
						$meta_field[&#039;type&#039;] !== &#039;color&#039; ? &#039;style=&quot;width: 100%&quot;&#039; : &#039;&#039;,
						$meta_field[&#039;id&#039;],
						$meta_field[&#039;id&#039;],
						$meta_field[&#039;type&#039;],
						$meta_value
					);
			}
			$output .= $this-&gt;format_rows( $label, $input );
		}
		echo &#039;&lt;table class=&quot;form-table&quot;&gt;&lt;tbody&gt;&#039; . $output . &#039;&lt;/tbody&gt;&lt;/table&gt;&#039;;
	}

	public function format_rows( $label, $input ) {
		return &#039;&lt;tr&gt;&lt;th&gt;&#039;.$label.&#039;&lt;/th&gt;&lt;td&gt;&#039;.$input.&#039;&lt;/td&gt;&lt;/tr&gt;&#039;;
	}

	public function save_fields( $post_id ) {
		if ( ! isset( $_POST[&#039;woocommerceproductup_nonce&#039;] ) )
			return $post_id;
		$nonce = $_POST[&#039;woocommerceproductup_nonce&#039;];
		if ( !wp_verify_nonce( $nonce, &#039;woocommerceproductup_data&#039; ) )
			return $post_id;
		if ( defined( &#039;DOING_AUTOSAVE&#039; ) &amp;&amp; DOING_AUTOSAVE )
			return $post_id;
		foreach ( $this-&gt;meta_fields as $meta_field ) {
			if ( isset( $_POST[ $meta_field[&#039;id&#039;] ] ) ) {
				switch ( $meta_field[&#039;type&#039;] ) {
					case &#039;email&#039;:
						$_POST[ $meta_field[&#039;id&#039;] ] = sanitize_email( $_POST[ $meta_field[&#039;id&#039;] ] );
						break;
					case &#039;text&#039;:
						$_POST[ $meta_field[&#039;id&#039;] ] = sanitize_text_field( $_POST[ $meta_field[&#039;id&#039;] ] );
						break;
				}
				update_post_meta( $post_id, $meta_field[&#039;id&#039;], $_POST[ $meta_field[&#039;id&#039;] ] );
			} else if ( $meta_field[&#039;type&#039;] === &#039;checkbox&#039; ) {
				update_post_meta( $post_id, $meta_field[&#039;id&#039;], &#039;0&#039; );
			}
		}
	}
}

if (class_exists(&#039;woocommerceproductupMetabox&#039;)) {
	new woocommerceproductupMetabox;
};
</pre></div><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Notre metabox côté visuel dans le produit WooCommerce</h2>
	<div  class="wpb_single_image wpb_content_element vc_align_left wpb_content_element">
		
		<figure class="wpb_wrapper vc_figure">
			<a href="https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce-1024x144.png" target="_self" class="vc_single_image-wrapper   vc_box_border_grey"><img fetchpriority="high" decoding="async" width="1402" height="197" src="https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce.png" class="vc_single_image-img attachment-full" alt="Metabox pour vos produits WooCommerce" title="Metabox pour vos produits WooCommerce" srcset="https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce.png 1402w, https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce-600x84.png 600w, https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce-300x42.png 300w, https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce-1024x144.png 1024w, https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce-768x108.png 768w, https://themespress.ca/wp-content/uploads/2022/05/Metabox-pour-vos-produits-WooCommerce-1320x185.png 1320w" sizes="(max-width: 1402px) 100vw, 1402px" /></a>
		</figure>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Ajouter notre date de mises à jour dans le loop produit</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Donc nous allons utiliser le hook <a href="http://hookr.io/actions/woocommerce_before_shop_loop_item_title/" target="_blank" rel="noopener"><strong>woocommerce_before_shop_loop_item_title</strong></a></p>
<p>Cet hook va nous permettre de positionner notre <a href="https://developer.wordpress.org/reference/functions/get_post_meta/" target="_blank" rel="noopener"><strong>get_post_meta </strong></a>du nom <strong>de woocommerce-update-product </strong>avant le titre du produit dans le loop, c&#8217;est-à-dire les résultats des produits dans la page boutique.</p>
<p>On peut customiser notre date. Dans notre hook ci-dessous, nous allons montrer la date en format que nous souhaitions.</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-2331456" class="ts-enlighterjs-container-single-enabled  " style="width: 100%;  margin-top: 0px; margin-bottom: 0px;" data-enlighter-doubleclick="true" data-enlighter-windowbutton="true" data-enlighter-windowtext="New Window" data-enlighter-rawbutton="true" data-enlighter-rawtext="RAW Code" data-enlighter-infobutton="false" data-enlighter-infotext="EnlighterJS" data-enlighter-indent="2"><pre id="ts-enlighterjs-pre-2331456" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="php" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">add_action( &#039;woocommerce_before_shop_loop_item_title&#039;, &#039;themespress_field_display_below_title&#039;, 2 );
function themespress_field_display_below_title(){
    global $product;
    // Get the custom field value
    $custom_field = get_post_meta( $product-&gt;get_id(), &#039;woocommerce-update-product&#039;, true );
    // Display
    if( ! empty($custom_field) ){
        echo &#039;&lt;p class=&quot;last-updates&quot; style=&quot;position:absolute;top:30px;background:#f95b26;color:white;padding:2px 5px&quot;&gt;&#039; . &#039;MAJ : &#039; . (new DateTime($custom_field))-&gt;format(&#039;d M Y&#039;) . &#039;&lt;/p&gt;&#039;;
    }
}</pre></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Ou bien afficher le nombre de jours que produit WooCommerce a été mis à jour en modifiant le hook.</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-7692476" class="ts-enlighterjs-container-single-enabled  " style="width: 100%;  margin-top: 0px; margin-bottom: 0px;" data-enlighter-doubleclick="true" data-enlighter-windowbutton="true" data-enlighter-windowtext="New Window" data-enlighter-rawbutton="true" data-enlighter-rawtext="RAW Code" data-enlighter-infobutton="false" data-enlighter-infotext="EnlighterJS" data-enlighter-indent="2"><pre id="ts-enlighterjs-pre-7692476" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="php" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">add_action( &#039;woocommerce_before_shop_loop_item_title&#039;, &#039;themespressdeux_field_display_below_title&#039;, 2 );
function themespressdeux_field_display_below_title(){
    global $product;
    // Get the custom field value
    $custom_field = get_post_meta( $product-&gt;get_id(), &#039;woocommerce-update-product&#039;, true );
    // Display
	$now = time(); // Current time 
	$your_date = strtotime($custom_field); // The first date
	$datediff = abs($now - $your_date); // Gives absolute Value
    if( ! empty($custom_field) ){ 
		echo &#039;&lt;p class=&quot;last-updates&quot; style=&quot;position:absolute;top:30px;background:#f95b26;color:white;padding:2px 5px&quot;&gt;&#039; . &#039;MAJ : &#039; . floor($datediff/(60*60*24)) . &#039;&amp;nbsp;jour(s)&#039; . &#039;&lt;/p&gt;&#039;;
    }
}</pre></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p><strong>Nous vous invitons à ne pas copier deux fois le hook. Choisissez soit le premier ou deuxième exemple.</strong></p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Afficher le get_post_meta dans le produit WooCommerce</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Il nous reste maintenant à utiliser le hook <a href="http://hookr.io/actions/woocommerce_before_single_product_summary/" target="_blank" rel="noopener">woocommerce_before_single_product_summary</a></p>
<p>afin de montrer notre information sur le produit consulté.</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-4954451" class="ts-enlighterjs-container-single-enabled  " style="width: 100%;  margin-top: 0px; margin-bottom: 0px;" data-enlighter-doubleclick="true" data-enlighter-windowbutton="true" data-enlighter-windowtext="New Window" data-enlighter-rawbutton="true" data-enlighter-rawtext="RAW Code" data-enlighter-infobutton="false" data-enlighter-infotext="EnlighterJS" data-enlighter-indent="2"><pre id="ts-enlighterjs-pre-4954451" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="php" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">add_action( &#039;woocommerce_before_single_product_summary&#039; , &#039;themespress_updates_date_before_product_title&#039;, 5 );
function themespress_updates_date_before_product_title() {
    global $product;
    // Get the custom field value
    $custom_field = get_post_meta( $product-&gt;get_id(), &#039;woocommerce-update-product&#039;, true );
    // Display
	$now = time(); // Current time 
	$your_date = strtotime($custom_field); // The first date
	$datediff = abs($now - $your_date); // Gives absolute Value
    if( ! empty($custom_field) ){ 
		echo &#039;&lt;p class=&quot;last-updates&quot; style=&quot;position:absolute;top:-40px;right:0;background:#f95b26;color:white;padding:2px 5px&quot;&gt;&#039; . &#039;MAJ : &#039; . floor($datediff/(60*60*24)) . &#039;&amp;nbsp;jour(s)&#039; . &#039;&lt;/p&gt;&#039;;
    }
}</pre></div></div></div></div></div>
</div><p>The post <a href="https://themespress.ca/ajouter-une-metadonnee-dernieres-mises-a-jour-produit-woocommerce/">Ajouter une métadonnée (Dernières mises à jour) – Produit Woocommerce</a> first appeared on <a href="https://themespress.ca">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/ajouter-une-metadonnee-dernieres-mises-a-jour-produit-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
