<?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>Themespress</title>
	<atom:link href="https://themespress.ca/en/feed/" rel="self" type="application/rss+xml" />
	<link>https://themespress.ca/en/</link>
	<description>Des tutoriels et ressources WordPress</description>
	<lastBuildDate>Wed, 19 Aug 2026 20:42:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://themespress.ca/wp-content/uploads/2020/10/cropped-Favicon-Themepress.ca_-32x32.png</url>
	<title>Themespress</title>
	<link>https://themespress.ca/en/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ThemesPress Query For Woocommerce</title>
		<link>https://themespress.ca/en/themespress-query-for-woocommerce/</link>
					<comments>https://themespress.ca/en/themespress-query-for-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Wed, 19 Aug 2026 20:41:51 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=9164</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"><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Advanced WooCommerce Search Filter: Modern, Fast, and Elegant Search</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Finding the right product quickly can make all the difference in an online store. <strong>ThemesPress Query for WooCommerce</strong> was designed to provide visitors with a simple, fast, and enjoyable search experience.</p>
<p>This <strong>Advanced WooCommerce Search Filter</strong> replaces traditional search methods with a modern interface and instant results, helping customers quickly discover the products that truly match their needs.</p>

		</div>
	</div>
<h3 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Instant and Accurate Results</h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Thanks to AJAX search, <strong>results can appear directly on the page without a full reload</strong>. This provides visitors with a smoother browsing experience, especially useful for stores with a large number of products.</p>
<p>The search can include product names, SKUs, categories, tags, and WooCommerce attributes. Multiple filters can also be used to refine the results based on the specific needs of your product catalog.</p>

		</div>
	</div>
<h3 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Easy-to-Understand Filters</h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>The <strong>Advanced WooCommerce Search Filter</strong> allows visitors to select a category, a price range, or different product attributes. They can also choose to display all products, only items that are in stock, products available on backorder, or products currently on sale.</p>
<p>Each search option is clearly presented, making it easy to use even for customers who are less familiar with online shopping. A reset button also allows users to quickly clear the selected filters.</p>

		</div>
	</div>
<h3 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >A Carefully Crafted Design</h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>ThemesPress Query for WooCommerce goes beyond functionality. Its interface was designed to give your product catalog a modern and professional look. The search bar, sidebar filters, instant result indicators, and product display work together to create a clean, attractive, and enjoyable browsing experience.</p>
<p>It is undoubtedly one of the most visually appealing search filters you can add to a WooCommerce store, while remaining simple and intuitive for your customers.</p>
<p>It will also soon be integrated into our <a href="https://fr-ca.wordpress.org/plugins/woo-classement/">Obiweb Statistics for WooCommerce</a> plugin.</p>

		</div>
	</div>
</div></div></div></div><div class="vc_row wpb_row vc_row-fluid"><div class="wpb_column vc_column_container vc_col-sm-6"><div class="vc_column-inner"><div class="wpb_wrapper"><h3 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Multiple Sorting Options</h3>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p><strong>Once the products have been found</strong>, visitors can <strong>sort them using different criteria: relevance, price from low to high or high to low, newest products, sales, alphabetical order, or average rating.</strong> This allows them to browse your catalog in the way that best suits their needs.</p>
<p>ThemesPress Query for WooCommerce is therefore an excellent solution for improving store navigation, showcasing your products more effectively, and helping visitors find what they are looking for faster.</p>

		</div>
	</div>
</div></div></div><div class="wpb_column vc_column_container vc_col-sm-6"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element read-more" >
		<div class="wpb_wrapper">
			<a class="button-secondary btn btn-color-2 btn-border-color-1" href="https://themespress.ca/en/products/plugins-wordpress/themespress-query-for-woocommerce/">Download</a>
		</div>
	</div>

	<div class="wpb_raw_code wpb_raw_html wpb_content_element read-more" >
		<div class="wpb_wrapper">
			<a class="button-secondary btn btn-color-2 btn-border-color-1" href="https://themespress.ca/en/products/plugins-wordpress/themespress-query-for-woocommerce/">Demo</a>
		</div>
	</div>

	<div  class="wpb_single_image wpb_content_element vc_align_left wpb_content_element">
		
		<figure class="wpb_wrapper vc_figure">
			<a class="" data-lightbox="lightbox[rel-9164-3933656343]" href="https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-1024x1024.png" target="_self" class="vc_single_image-wrapper   vc_box_border_grey"><img fetchpriority="high" decoding="async" width="1254" height="1254" src="https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce.png" class="vc_single_image-img attachment-full" alt="Filtre de recherche avancée Woocommerce" title="ThemesPress Query For Woocommerce" srcset="https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce.png 1254w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-300x300.png 300w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-1024x1024.png 1024w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-150x150.png 150w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-768x768.png 768w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-600x600.png 600w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Query-For-Woocommerce-100x100.png 100w" sizes="(max-width: 1254px) 100vw, 1254px" /></a>
		</figure>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/themespress-query-for-woocommerce/">ThemesPress Query For Woocommerce</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/themespress-query-for-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Add an audio version to your WordPress posts</title>
		<link>https://themespress.ca/en/wordpress-audio-posts/</link>
					<comments>https://themespress.ca/en/wordpress-audio-posts/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Tue, 11 Aug 2026 16:05:18 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=8945</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><strong>Add an audio version to your WordPress posts:</strong> The way people consume content online is evolving. Some visitors prefer to read an article at their own pace, while others appreciate being able to listen to it while working, commuting, or doing another activity.</p>
<p>With the <a href="https://themespress.ca/en/products/plugins-wordpress/themespress-voice-reader-for-wordpress/"><strong>ThemesPress Voice Reader for WordPress</strong> </a>plugin, you can easily add a voice-reading option to your WordPress posts and offer your visitors a new way to enjoy your content, just like with the player shown above.</p>

		</div>
	</div>
<h2 style="text-align: left;font-family:Abril Fatface;font-weight:400;font-style:normal" class="vc_custom_heading vc_do_custom_heading" >How to add an audio version to your WordPress posts ?</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>The player integrates directly into your posts and allows visitors to start listening to the content in just a few seconds. No audio files need to be created or recorded manually.</p>
<p>This solution can also make your content more comfortable to consume for people who prefer listening to text rather than spending long periods in front of a screen.</p>
<p><a href="https://themespress.ca/en/products/plugins-wordpress/themespress-voice-reader-for-wordpress/"><strong>ThemesPress Voice Reader for WordPress</strong></a> is a simple and lightweight solution for giving your posts a voice and offering visitors a more modern way to experience your content.</p>
<p>Your articles stay exactly the same, but your readers now have a choice: <strong>read them or listen to them</strong>.</p>

		</div>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/wordpress-audio-posts/">Add an audio version to your WordPress posts</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/wordpress-audio-posts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Monitor WordPress Users: Activity Log for New Accounts &#038; Role Changes</title>
		<link>https://themespress.ca/en/monitor-wordpress-users-activity-log-for-new-accounts-role-changes/</link>
					<comments>https://themespress.ca/en/monitor-wordpress-users-activity-log-for-new-accounts-role-changes/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 19:15:06 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=8907</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>WordPress site security isn&#8217;t just about files, plugins, or login attempts. The creation of a new user or the unexpected assignment of an administrator role can also be a sign of suspicious activity.</p>
<p>Monitoring WordPress users: Obiweb User Security Monitor is a WordPress activity log plugin designed to track these sensitive events and allow site administrators to react quickly when an unusual change is detected.</p>
<p>The plugin specifically monitors the creation of new user accounts, new administrators, and role changes. Each event can be logged with information such as the date, the affected user, their role, the IP address, and the user who performed the action.</p>
<p>Thanks to this WordPress activity log plugin, the site owner gains a straightforward history of key changes related to user accounts.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Monitor WordPress Users and Role Changes</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Monitoring WordPress users is particularly useful when a site has multiple administrators, editors, shop managers, or customer accounts.</p>
<p>Obiweb User Security Monitor lets you select which roles are considered sensitive and automatically sends an email alert whenever a new user is created or a account is assigned a monitored role.</p>
<p>The admin dashboard also provides an event log with different alert levels to help you quickly identify critical actions.</p>
<p>Key features include:</p>
<ul>
<li>New user monitoring</li>
<li>Detection of new administrators</li>
<li>Sensitive role change tracking</li>
<li>Automatic email alerts</li>
<li>IP address logging</li>
<li>Action attribution (tracks who performed the change)</li>
<li>Security event log</li>
<li>Selectable monitored roles</li>
<li>Configurable log limit</li>
<li>Test email delivery</li>
</ul>
<p>Monitoring WordPress users adds an extra layer of control that helps quickly spot unexpected account creations or privilege escalation.</p>
<p>Obiweb User Security Monitor offers a lightweight solution to keep an eye on sensitive user activity without turning your WordPress dashboard into a complex security platform.</p>

		</div>
	</div>

	<div  class="wpb_single_image wpb_content_element vc_align_left wpb_content_element wpb_animate_when_almost_visible wpb_fadeInUp fadeInUp">
		
		<figure class="wpb_wrapper vc_figure">
			<a class="" data-lightbox="lightbox[rel-8907-1165175524]" href="https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1-1024x768.png" target="_self" class="vc_single_image-wrapper   vc_box_border_grey"><img decoding="async" width="1448" height="1086" src="https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1.png" class="vc_single_image-img attachment-full" alt="Plugin WP : Journal d’activité WordPress des nouveau utilisateurs" title="Obiweb User Security Monitor" srcset="https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1.png 1448w, https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1-300x225.png 300w, https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1-1024x768.png 1024w, https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1-768x576.png 768w, https://themespress.ca/wp-content/uploads/2026/08/Obiweb-User-Security-Monitor-1-600x450.png 600w" sizes="(max-width: 1448px) 100vw, 1448px" /></a>
		</figure>
	</div>

	<div class="wpb_text_column wpb_content_element panier-promo" >
		<div class="wpb_wrapper">
			<p><strong><em>Need to keep a closer eye on your WordPress user accounts?</em></strong></p>
<p>Discover <strong>Obiweb User Security Monitor</strong>, an out-of-the-box plugin that lets you track user accounts, detect new administrator creations, and maintain better control over all user-related activity on your site.</p>
<p>Easy to install and simple to use, it helps strengthen your site&#8217;s security by allowing you to quickly spot suspicious accounts or unusual changes.</p>

		</div>
	</div>

	<div class="wpb_raw_code wpb_raw_html wpb_content_element read-more" >
		<div class="wpb_wrapper">
			<a class="button-secondary btn btn-color-2 btn-border-color-1" href="https://themespress.ca/en/products/plugins-wordpress/obiweb-user-security-monitor/">Download</a>
		</div>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/monitor-wordpress-users-activity-log-for-new-accounts-role-changes/">Monitor WordPress Users: Activity Log for New Accounts & Role Changes</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/monitor-wordpress-users-activity-log-for-new-accounts-role-changes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress Video Gallery for Your MP4 Videos</title>
		<link>https://themespress.ca/en/galerie-video-wordpress-mp4/</link>
					<comments>https://themespress.ca/en/galerie-video-wordpress-mp4/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Sat, 08 Aug 2026 16:49:35 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=8859</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>MP4 videos in WordPress: <strong>ThemesPress Post Video Gallery</strong> is a **WordPress plugin** designed to make it easy to <strong>add multiple videos to a WordPress post</strong> while keeping the layout clean, responsive, and easy to manage.</p>
<p>That is why we developed <strong>ThemesPress Post Video Gallery</strong>, a simple plugin that lets you add multiple MP4 videos directly from the <a href="https://wordpress.org/documentation/article/media-library-screen/" target="_blank" rel="noopener">WordPress Media Library</a> and display them in a modern <strong>WordPress Video Gallery</strong></p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Add Your Videos Directly to the Post</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>The plugin adds a metabox directly to the post editing screen.</p>
<p>From this interface, you can:</p>
<p>* add multiple MP4 videos;<br />
* remove individual videos;<br />
* reorder them using drag and drop;<br />
* choose whether the gallery appears before or after the post content;<br />
* save your changes without reloading the page.</p>
<p>Once the videos are added, the WordPress video gallery is displayed automatically within the post.</p>
<p>No page builder or shortcode is required.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >A Responsive, Automatic Video Gallery</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>The video gallery automatically adjusts its layout based on the number of videos displayed.</p>
<p>A single video uses the full available width, two videos are displayed in two columns, and three or more videos can be displayed in up to three columns.</p>
<p>On tablets and mobile devices, the layout automatically adapts to the screen size.</p>
<p>The plugin also detects whether a video is landscape, portrait, or square to preserve the correct proportions.</p>

		</div>
	</div>

	<div  class="wpb_single_image wpb_content_element vc_align_left wpb_content_element wpb_animate_when_almost_visible wpb_fadeInUp fadeInUp">
		
		<figure class="wpb_wrapper vc_figure">
			<a class="" data-lightbox="lightbox[rel-8859-3504935040]" href="https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery-1024x683.png" target="_self" class="vc_single_image-wrapper   vc_box_border_grey"><img decoding="async" width="1536" height="1024" src="https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery.png" class="vc_single_image-img attachment-full" alt="ThemesPress Post Video Gallery" title="ThemesPress Post Video Gallery" srcset="https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery.png 1536w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery-300x200.png 300w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery-1024x683.png 1024w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery-768x512.png 768w, https://themespress.ca/wp-content/uploads/2026/08/ThemesPress-Post-Video-Gallery-600x400.png 600w" sizes="(max-width: 1536px) 100vw, 1536px" /></a>
		</figure>
	</div>

	<div class="wpb_text_column wpb_content_element panier-promo" >
		<div class="wpb_wrapper">
			<p><strong><em>Need an easy way to add multiple MP4 videos to your WordPress posts?</em></strong></p>
<p><em><strong>Discover ThemesPress Post Video Gallery</strong>, a ready-to-use plugin that lets you manage your videos directly from the WordPress editor and automatically display them in a modern, responsive gallery that is easy to use.</em></p>

		</div>
	</div>

	<div class="wpb_raw_code wpb_raw_html wpb_content_element read-more" >
		<div class="wpb_wrapper">
			<a class="button-secondary btn btn-color-2 btn-border-color-1" href="https://themespress.ca/en/products/plugins-wordpress/themespress-post-video-gallery-mp4-wordpress-video-gallery/">Download</a>
		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >A More Enjoyable Viewing Experience</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>When a video starts playing, the other videos in the gallery are automatically paused.</p>
<p>This allows visitors to watch videos without having multiple players running at the same time.</p>
<p>The plugin uses the browser’s native HTML5 video player and works directly with your MP4 videos hosted in the WordPress Media Library.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Simple for Users, Practical for Developers</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>ThemesPress Post Video Gallery was designed to remain simple and easy to use while providing a clean integration for developers who want to use it in client projects.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >WordPress Video Gallery: Easily Add MP4 Videos</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>ThemesPress Post Video Gallery is a lightweight solution for quickly adding multiple MP4 videos to your WordPress posts.</p>
<p>It is especially well suited for tutorials, portfolios, product demos, project presentations, and any content that requires multiple videos.</p>

		</div>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/galerie-video-wordpress-mp4/">WordPress Video Gallery for Your MP4 Videos</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/galerie-video-wordpress-mp4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce: Active Cart Statistics</title>
		<link>https://themespress.ca/en/woocommerce-statistics-cart/</link>
					<comments>https://themespress.ca/en/woocommerce-statistics-cart/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Wed, 05 Aug 2026 16:51:58 +0000</pubDate>
				<category><![CDATA[Plugins]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=8782</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>In this tutorial, we&#8217;ll learn how to calculate the total number of products currently stored in active WooCommerce shopping carts, as well as the total value of all active carts.</p>
<p>WooCommerce&#8217;s built-in analytics allow you to track orders, sales, and revenue, but they don&#8217;t always provide a real-time view of customer activity. However, the products currently added to visitors&#8217; shopping carts are valuable data that can help you analyze customer interest and estimate your potential sales before purchases are completed.</p>
<p>By using WooCommerce active cart statistics, you can determine the total number of items currently selected by customers and the combined monetary value of all active shopping carts before they are converted into orders.</p>
<p>In this tutorial, we&#8217;ll create two custom functions to:</p>
<ul>
<li>Calculate the total quantity of products across all active WooCommerce shopping carts.</li>
<li>Calculate the total value of all active WooCommerce shopping carts.</li>
</ul>

		</div>
	</div>
</div></div></div></div><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"><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Calculate the Total Quantity of Products in All Active WooCommerce Shopping Carts.</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div><div id="ts-enlighterjs-container-6768272" 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-6768272" 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="">/////////////////////////// Show count product in all carts  /////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////

function woocl_get_total_products_in_active_carts() {
    global $wpdb;

    // 1. On r&eacute;cup&egrave;re dynamiquement le bon ID du site (g&eacute;n&eacute;ralement 1)
    $blog_id = get_current_blog_id();
    $meta_key = &#039;_woocommerce_persistent_cart_&#039; . $blog_id;

    // 2. On ex&eacute;cute la requ&ecirc;te avec la bonne cl&eacute;
    $results = $wpdb-&gt;get_results($wpdb-&gt;prepare(&quot;
        SELECT meta_value 
        FROM {$wpdb-&gt;usermeta} 
        WHERE meta_key = %s AND meta_value != &#039;&#039;
    &quot;, $meta_key));

    $total = 0;

    if (!empty($results)) {
        foreach ($results as $row) {
            $cart_data = maybe_unserialize($row-&gt;meta_value);

            // 3. On v&eacute;rifie s&#039;il y a des produits et on additionne les quantit&eacute;s
            if (!empty($cart_data[&#039;cart&#039;]) &amp;&amp; is_array($cart_data[&#039;cart&#039;])) {
                foreach ($cart_data[&#039;cart&#039;] as $item) {
                    if (isset($item[&#039;quantity&#039;]) &amp;&amp; is_numeric($item[&#039;quantity&#039;])) {
                        $total += (int) $item[&#039;quantity&#039;];
                    }
                }
            }
        }
    }

    return $total;
}</pre></div></div></div></div></div><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"><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Calculate the Total Value of All Active WooCommerce Shopping Carts.</h2><div class="vc_empty_space"   style="height: 22px"><span class="vc_empty_space_inner"></span></div><div id="ts-enlighterjs-container-8276490" 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-8276490" 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="">/////////////////////////// Show price amount in all carts  //////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////

function woocl_get_total_cart_amount_all_users() {
    global $wpdb;

    $blog_id = get_current_blog_id();
    $meta_key = &#039;_woocommerce_persistent_cart_&#039; . $blog_id;

    // R&eacute;cup&eacute;ration de toutes les lignes non vides
    $results = $wpdb-&gt;get_results($wpdb-&gt;prepare(&quot;
        SELECT meta_value 
        FROM {$wpdb-&gt;usermeta} 
        WHERE meta_key = %s AND meta_value != &#039;&#039;
    &quot;, $meta_key));

    $total_amount = 0;

    if (!empty($results)) {
        foreach ($results as $row) {
            $cart_data = maybe_unserialize($row-&gt;meta_value);

            // On v&eacute;rifie s&#039;il y a bien des &eacute;l&eacute;ments dans le panier (ex: a:2:{...} et non a:0:{})
            if (!empty($cart_data[&#039;cart&#039;]) &amp;&amp; is_array($cart_data[&#039;cart&#039;])) {
                
                foreach ($cart_data[&#039;cart&#039;] as $cart_item_key =&gt; $item) {
                    
                    // WooCommerce stocke TOUJOURS l&#039;ID dans &#039;product_id&#039; au sein de l&#039;&eacute;l&eacute;ment
                    $product_id = isset($item[&#039;product_id&#039;]) ? (int) $item[&#039;product_id&#039;] : 0;
                    $quantity = isset($item[&#039;quantity&#039;]) ? (int) $item[&#039;quantity&#039;] : 0;

                    if ($product_id &gt; 0 &amp;&amp; $quantity &gt; 0) {
                        $product = wc_get_product($product_id);
                        
                        if ($product) {
                            // Prise en compte du prix du produit (ou de la variation)
                            $price = (float) $product-&gt;get_price();
                            $total_amount += $price * $quantity;
                        }
                    }
                }
            }
        }
    }

    return wc_price($total_amount);
}</pre></div></div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/woocommerce-statistics-cart/">WooCommerce: Active Cart Statistics</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/woocommerce-statistics-cart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Custom WordPress and WooCommerce Development Services</title>
		<link>https://themespress.ca/en/developpement-wordpress-woocommerce/</link>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Mon, 03 Aug 2026 21:15:50 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://themespress.ca/services-de-developpement-wordpress-et-woocommerce-sur-mesure/</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><strong>WordPress and WooCommerce Development:</strong> Every WordPress project is unique. When existing features do not fully meet your needs, custom development allows you to create a solution perfectly tailored to your website, your business, and your goals.</p>
<p>ThemesPress helps businesses, individuals, and website owners create high-performance, scalable, and secure WordPress solutions.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" id="devweb">Custom WordPress Development Services</h2><div class="vc_empty_space"   style="height: 12px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>We create custom developments to enhance the capabilities of your WordPress website:</p>
<ul>
<li>Creation of custom features;</li>
<li>Development of custom modules;</li>
<li>Integration of external solutions;</li>
<li>Optimization and improvement of existing features;</li>
<li>Automation of repetitive tasks.</li>
</ul>
<p>Your website becomes a tool tailored to the way you work.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" id="devwoocommerce">Custom WooCommerce Development</h2><div class="vc_empty_space"   style="height: 12px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>WooCommerce offers great flexibility, but some features require a custom approach.</p>
<p>We develop WooCommerce solutions tailored to your needs:</p>
<ul>
<li>Custom features for your online store;</li>
<li>Advanced product and order management;</li>
<li>Specific shipping and pricing systems;</li>
<li>Integrations with your existing tools;</li>
<li>Improvements to the customer experience.</li>
</ul>
<p>We transform your WooCommerce store into a solution that is truly adapted to your business.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" id="devplugins">Custom WordPress Plugin Development</h2><div class="vc_empty_space"   style="height: 12px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p><strong>Need a feature that does not exist yet?</strong></p>
<p>We develop custom WordPress plugins built according to WordPress standards:</p>
<ul>
<li>Clean and scalable architecture;</li>
<li>Compatibility with your environment;</li>
<li>Custom administration interface;</li>
<li>Optimized and maintainable code.</li>
</ul>
<p>Whether it is for internal use or a product intended for commercialization, your plugin is developed according to your specific needs.</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" id="devthemes">Custom WordPress Theme Development</h2><div class="vc_empty_space"   style="height: 12px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>A theme does not always meet all the requirements of a project.</p>
<p>We can add or modify features directly within your WordPress environment:</p>
<ul>
<li>Advanced theme customization;</li>
<li>Creation of custom templates;</li>
<li>Addition of specific components;</li>
<li>Development within a child theme;</li>
<li>Improvements to the user experience.</li>
</ul>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" id="devapi">API Development and Custom Integrations</h2><div class="vc_empty_space"   style="height: 12px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p><strong>Modern websites often need to communicate with multiple services.</strong></p>
<p>We develop APIs and integrations that connect WordPress with your tools:</p>
<ul>
<li>Creation of custom REST APIs;</li>
<li>Connection with external services;</li>
<li>Data synchronization;</li>
<li>Automation between different platforms;</li>
<li>Development of solutions tailored to your processes.</li>
</ul>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" id="devmaintenance">Sustainable Web Development Solutions</h2><div class="vc_empty_space"   style="height: 12px"><span class="vc_empty_space_inner"></span></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Every project is developed with a strong focus on code quality, security, performance, and ease of maintenance.</p>
<p>Do you have an idea, a specific need, or a feature that seems impossible to build?</p>
<p>ThemesPress helps you create a WordPress solution tailored to your project.</p>

		</div>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/developpement-wordpress-woocommerce/">Custom WordPress and WooCommerce Development Services</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Updating your Formidable Forms Pro License</title>
		<link>https://themespress.ca/en/updating-formidable-forms-pro-license/</link>
					<comments>https://themespress.ca/en/updating-formidable-forms-pro-license/#respond</comments>
		
		<dc:creator><![CDATA[Themespress]]></dc:creator>
		<pubDate>Wed, 14 Jan 2026 18:06:57 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Formidable Form]]></category>
		<category><![CDATA[License key]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=8395</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>It is possible that Formidable Forms Pro cannot recognize the newest license key. In certain cases, the Formidable → Settings page displays blank. In this case, you won&#8217;t be able to update your license key within the WordPress admin.</p>
<p>When this happens, you can update the license key directly in the database via phpMyAdmin seeing as WordPress stores it in the wp_options table. So when the admin page is blank, you can update it manually.</p>
<p>However, you should use this method as a last resort. It allows you to fix a blocked or corrupted license without having to uninstall the plugin or lose data. Before anything, make sure to backup your database.</p>
<p>Once the license updated, the <a href="https://formidableforms.com/" target="_blank" rel="noopener">Formidable</a> → Settings page will become accessible once again. You can then return to the Formidable admin page and update or replace the key from the WordPress interface.</p>

		</div>
	</div>

	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<ul>
<li data-start="122" data-end="357">
<p data-start="125" data-end="357"><strong data-start="125" data-end="177">Updating the license in the database</strong><br data-start="177" data-end="180" />When the <strong data-start="199" data-end="224">Formidable → Settings</strong> page becomes inaccessible (blank page), the license key can be edited directly in the modifiée <code data-start="325" data-end="337">wp_options</code> table via <strong data-start="342" data-end="356">phpMyAdmin</strong>.</p>
</li>
<li data-start="359" data-end="583">
<p data-start="362" data-end="583"><strong data-start="362" data-end="412">Re-establishing access to the Formidable Settings page</strong><br data-start="412" data-end="415" />This update allows you to <strong>fix the issue</strong> in order to be able to accesss the <strong data-start="525" data-end="550">Formidable → Settings</strong> page within the WordPress admin.</p>
</li>
<li data-start="585" data-end="859">
<p data-start="588" data-end="859"><strong data-start="588" data-end="641">Updating the license from the WordPress interface</strong><br data-start="641" data-end="644" />Once the page is accessible, it is highly recommended to return to the <strong data-start="695" data-end="735"><a href="https://formidableforms.com/" target="_blank" rel="noopener">Formidable</a></strong> <strong>settings</strong> and <strong>update or confirm the license key from te interface</strong> in order to restore normal functionality to the plugin.</p>
</li>
</ul>

		</div>
	</div>
<div id="ts-enlighterjs-container-4368268" 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-4368268" 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="">UPDATE wp_options
SET option_value = &#039;a:1:{s:7:&quot;license&quot;;s:32:&quot;YOUR API KEY HERE&quot;;}&#039;
WHERE option_name = &#039;frmpro-credentials&#039;;</pre></div></div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/updating-formidable-forms-pro-license/">Updating your Formidable Forms Pro License</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/updating-formidable-forms-pro-license/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Calculating Average Shipping Cost per Order &#8211; WooCommerce</title>
		<link>https://themespress.ca/en/average-shipping-cost/</link>
					<comments>https://themespress.ca/en/average-shipping-cost/#respond</comments>
		
		<dc:creator><![CDATA[Daniel]]></dc:creator>
		<pubDate>Sat, 28 Oct 2023 20:24:44 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=7502</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>With this tutorial, we will calculate the average shipping cost per order across all orders; including those with no shipping fees. You can tweak the function like this:</p>

		</div>
	</div>
<h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Calculating the average order shipping cost for all orders</h2><div id="ts-enlighterjs-container-4897302" 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-4897302" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="standard" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">function woocl_calculate_average_shipping_cost_per_order_all_orders() {
    $args = array(
        &#039;status&#039; =&gt; array(&#039;wc-completed&#039;, &#039;wc-shipped&#039;),
        &#039;limit&#039; =&gt; -1,
        &#039;return&#039; =&gt; &#039;ids&#039;,
    );
    $shipped_orders = wc_get_orders($args);

    $total_shipping_cost = 0;
    $total_orders = count($shipped_orders);

    foreach ($shipped_orders as $order_id) {
        $order = wc_get_order($order_id);
        $shipping_total = (float) $order-&gt;get_shipping_total();
        $total_shipping_cost += $shipping_total;
    }

    if ($total_orders &gt; 0) {
        $average_shipping_cost_per_order = $total_shipping_cost / $total_orders;
    } else {
        $average_shipping_cost_per_order = 0;
    }

    return $average_shipping_cost_per_order;
}
</pre></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Let&#8217;s now display it in our template.</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-7723886" 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-7723886" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="standard" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">$average_shipping_cost_per_order = woocl_calculate_average_shipping_cost_per_order_all_orders();
echo &#039;Co&ucirc;t moyen d\&#039;exp&eacute;dition par commande (toutes les commandes): &#039; . wc_price($average_shipping_cost_per_order);
</pre></div><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Calculating the average order shipping cost: Order with shipping fees</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>If you want to calculate average order shipping costs for orders with a <strong>shipping value</strong>, you can use the following function:</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-9870115" 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-9870115" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="standard" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">function woocl_calculate_average_shipping_cost_for_orders_with_shipping() {
    $args = array(
        &#039;status&#039; =&gt; array(&#039;wc-completed&#039;, &#039;wc-shipped&#039;),
        &#039;limit&#039; =&gt; -1,
        &#039;return&#039; =&gt; &#039;ids&#039;,
    );
    $shipped_orders = wc_get_orders($args);

    $total_shipping_cost = 0;
    $orders_with_shipping = 0;

    foreach ($shipped_orders as $order_id) {
        $order = wc_get_order($order_id);
        $shipping_total = (float) $order-&gt;get_shipping_total();

        if ($shipping_total &gt; 0) {
            $total_shipping_cost += $shipping_total;
            $orders_with_shipping++;
        }
    }

    if ($orders_with_shipping &gt; 0) {
        $average_shipping_cost = $total_shipping_cost / $orders_with_shipping;
    } else {
        $average_shipping_cost = 0;
    }

    return $average_shipping_cost;
}
</pre></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Displaying average order shipping cost (only for orders with a shipping value)</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-4015300" 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-4015300" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="standard" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">$average_shipping_cost = woocl_calculate_average_shipping_cost_for_orders_with_shipping();
echo &#039;Co&ucirc;t moyen d\&#039;exp&eacute;dition (uniquement les commandes avec frais d\&#039;exp&eacute;dition): &#039; . wc_price($average_shipping_cost);
</pre></div></div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/average-shipping-cost/">Calculating Average Shipping Cost per Order – WooCommerce</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/average-shipping-cost/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MemberPress Subscriptions &#8211; WooCommerce customer account</title>
		<link>https://themespress.ca/en/memberpress-subscriptions-woocommerce-customer-account/</link>
					<comments>https://themespress.ca/en/memberpress-subscriptions-woocommerce-customer-account/#respond</comments>
		
		<dc:creator><![CDATA[Daniel]]></dc:creator>
		<pubDate>Sat, 14 Oct 2023 22:46:38 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=7464</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>With this tutorial, we will add a new tab that will allow you to access MemberPress subs for each customer in their respective WooCommerce profiles.</p>
<p>We&#8217;re looking to add a new tab in the customer&#8217;s WooCommerce account.</p>

		</div>
	</div>
<div id="ts-enlighterjs-container-1904071" 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-1904071" class="" style="white-space: pre-wrap; height: 100%; margin: 0; padding: 0;" data-enlighter-language="standard" data-enlighter-theme="enlighter" data-enlighter-group="" data-enlighter-title="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="1" data-enlighter-highlight="">//New Tab Woocommerce
add_filter ( &#039;woocommerce_account_menu_items&#039;, &#039;subscriptions_woocommerce_link&#039;, 40 );
function subscriptions_woocommerce_link( $menu_links ){
	$menu_links = array_slice( $menu_links, 0, 5, true )
	+ array( &#039;subscriptions&#039; =&gt; &#039;Adh&eacute;sions Memberpress&#039; )
	+ array_slice( $menu_links, 5, NULL, true );
	return $menu_links;
}

//Register permalink endpoint
add_action( &#039;init&#039;, &#039;subscriptions_woocommerce_link_add_endpoint&#039; );
function subscriptions_woocommerce_link_add_endpoint() {
    add_rewrite_endpoint( &#039;subscriptions&#039;, EP_PAGES );
}

//Content for the new page in My Account, woocommerce_account_{ENDPOINT NAME}_endpoint
add_action( &#039;woocommerce_account_subscriptions_endpoint&#039;, &#039;subscriptions_endpoint_content&#039; );
function subscriptions_endpoint_content() {
	echo &#039;&lt;h2&gt;Adh&eacute;sions&lt;/h2&gt;&#039;;
	echo do_shortcode(&#039;[mepr-account-form]&#039;);
}</pre></div>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Once you&#8217;ve added the code in your functions.php file, you will need to go in your WordPress configurations and re-save your permalinks without changing the configurations.<strong>Simply click on Update.</strong></p>

		</div>
	</div>

	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>Now, we will rewrite the display layout of the MemberPress template.</p>
<p>In order to proceed, you&#8217;ll need a WordPress theme or child theme. In the enabled theme, you&#8217;ll need to add a new <strong>MemberPress</strong> folder in the root folder of your theme and then add the <strong>mpca-manage-account-template.php</strong> file in the newly created folder.</p>
<p>You will also need the <strong>memberpress-corporate/app/views/mpca-manage-account-template.php</strong> file in the same MemberPress folder.</p>

		</div>
	</div>
</div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/memberpress-subscriptions-woocommerce-customer-account/">MemberPress Subscriptions – WooCommerce customer account</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/memberpress-subscriptions-woocommerce-customer-account/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Number of WordPress Media Query</title>
		<link>https://themespress.ca/en/number-of-wordpress-media-query/</link>
					<comments>https://themespress.ca/en/number-of-wordpress-media-query/#respond</comments>
		
		<dc:creator><![CDATA[Daniel]]></dc:creator>
		<pubDate>Sat, 19 Aug 2023 18:36:49 +0000</pubDate>
				<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://themespress.ca/?p=7347</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"><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Number of WordPress Media Query</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>With this tutorial, we will create a query that will return the number of media (i.e. images) that have been uploaded in WordPress.</p>
<p>Let&#8217;s start with image type. In our query below, we will create an SQL query that will fetch the number of images uploaded today. <strong>Le post mime type</strong></p>
<p>.<strong>Here&#8217;s the SQL query inside a shortcode:</strong></p>

		</div>
	</div>
<div id="ts-enlighterjs-container-6686982" 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-6686982" 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="">/**************************** Count des images telechargees aujourd&#039;hui ********************************/

function count_attachments_today() {
    global $wpdb;

    $today = getdate();
    $year = $today[&#039;year&#039;];
    $month = $today[&#039;mon&#039;];
    $day = $today[&#039;mday&#039;];

    $count = $wpdb-&gt;get_var(
        $wpdb-&gt;prepare(
            &quot;SELECT COUNT(ID) FROM $wpdb-&gt;posts
            WHERE post_type = &#039;attachment&#039;
            AND post_mime_type LIKE &#039;image%%&#039;
            AND YEAR(post_date) = %d
            AND MONTH(post_date) = %d
            AND DAY(post_date) = %d&quot;,
            $year, $month, $day
        )
    );

    return &#039;&lt;div class=&quot;addo40px addocenter&quot;&gt;&#039; . $count . &#039;&lt;/div&gt;&#039;;
}
add_shortcode( &#039;attachmentcounttoday&#039;, &#039;count_attachments_today&#039; );</pre></div><h2 style="text-align: left" class="vc_custom_heading vc_do_custom_heading" >Number of WordPress Media Query</h2>
	<div class="wpb_text_column wpb_content_element" >
		<div class="wpb_wrapper">
			<p>We will now do the same query, but this type for the video format. <strong>Once again, here&#8217;s the SQL query inside a shortcode:</strong></p>

		</div>
	</div>
<div id="ts-enlighterjs-container-9800360" 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-9800360" 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="">/**************************** Count des videos telechargees aujourd&#039;hui ********************************/

function count_videos_attachments_today() {
    global $wpdb;

    $today = getdate();
    $year = $today[&#039;year&#039;];
    $month = $today[&#039;mon&#039;];
    $day = $today[&#039;mday&#039;];

    $count = $wpdb-&gt;get_var(
        $wpdb-&gt;prepare(
            &quot;SELECT COUNT(ID) FROM $wpdb-&gt;posts
            WHERE post_type = &#039;attachment&#039;
            AND post_mime_type LIKE &#039;video%%&#039;
            AND YEAR(post_date) = %d
            AND MONTH(post_date) = %d
            AND DAY(post_date) = %d&quot;,
            $year, $month, $day
        )
    );

    return &#039;&lt;div class=&quot;addo40px addocenter&quot;&gt;&#039; . $count . &#039;&lt;/div&gt;&#039;;
}
add_shortcode( &#039;videoattachmentcounttoday&#039;, &#039;count_videos_attachments_today&#039; );
</pre></div></div></div></div></div>
</div><p>The post <a href="https://themespress.ca/en/number-of-wordpress-media-query/">Number of WordPress Media Query</a> first appeared on <a href="https://themespress.ca/en/">Themespress</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://themespress.ca/en/number-of-wordpress-media-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
