
<?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>Plugin Customization | 79mplus</title>
	<atom:link href="https://www.79mplus.com/project_category/plugin-customization/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.79mplus.com</link>
	<description>Top-Tier WordPress Development Company for Custom, Scalable Solutions</description>
	<lastBuildDate>Mon, 11 Feb 2019 07:12:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.79mplus.com/assets/cropped-favicon2-32x32.png</url>
	<title>Plugin Customization | 79mplus</title>
	<link>https://www.79mplus.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Automatic Facebook Centric Order System for WooCommerce</title>
		<link>https://www.79mplus.com/project/facebook-ordering-woocommerce/</link>
					<comments>https://www.79mplus.com/project/facebook-ordering-woocommerce/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Mon, 11 Feb 2019 07:12:08 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=497421</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/fbwc-featured2.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/facebook-ordering-woocommerce/">Automatic Facebook Centric Order System for WooCommerce</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/facebook-ordering-woocommerce/">Automatic Facebook Centric Order System for WooCommerce</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/fbwc-featured2.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/facebook-ordering-woocommerce/">Automatic Facebook Centric Order System for WooCommerce</a></p>
<p><div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_0 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Automatic Facebook Centric Order System for WooCommerce</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-api-integration">Custom API Integration</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/facebook-graph-api">Facebook Graph API</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/woocommerce">WooCommerce</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_0 et_animated et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img fetchpriority="high" decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/fbwc-banner.jpg" alt="" title="Automatic Facebook Centric Order System for WooCommerce" srcset="https://www.79mplus.com/assets/fbwc-banner.jpg 1100w, https://www.79mplus.com/assets/fbwc-banner-300x131.jpg 300w, https://www.79mplus.com/assets/fbwc-banner-768x335.jpg 768w, https://www.79mplus.com/assets/fbwc-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/fbwc-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/fbwc-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-497458"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_1 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had an online store with a variety of product range. They had a Facebook page, which they wanted to intelligently intgrate with their WordPress. They wanted a system to post products to Facebook page from within WordPress interface. They also needed a mechanism so that when someone comments &#8220;+1&#8221; or +any number on the post, it automatically places an order on WordPress. So, the integration is both ways. The idea was amazing and interesting, so we took the job.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Implement so that product can be posted to Facebook from WordPress</li>
<li>Implement automated ordering by just posting a comment on Facebook</li>
<li>Create user login automatically on WordPress from the Facebook comment and send email notification</li>
<li>Feature to update billing and shipping info from My Account page of the new user</li>
<li>Implement custom filter system to see all running orders at a glance for individual products</li>
<li>Make the solution multisite ready with different Facebook pages for each one</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_2 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_2">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_2  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The project was full of new ideas to challenge our limits.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_3">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_3  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Posting Products to Facebook</h3>
<p>We implemented a product posting feature from within WP Admin to post products to the Facebook page. We have created a separate plugin for the Facebook integration and it utilizes the Facebook Graph API.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_4  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Facebook Ordering</h3>
<p>Our client wanted us to implement a comment feature so that whenever someone posts a &#8220;+1&#8221; comment on the product post, the product is automatically ordered on WooCommerce and a WordPress user is created with that user&#8217;s name and information from the comment. Later when he orders in future, previously created account for him is reused.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_5  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>User Login and Info</h3>
<p>The automatically created user gets an email about his account with login details. The user can then update their shipping and billing address or any other info from their My Account page.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_4">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_6  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Custom Filter System</h3>
<p>We have also built a custom page under WP Admin WooCommerce menu entry to hold a list of the products that can be filtered if needed. It shows the orders for the individual products and additionally shows order statistics for easier management and monitoring.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_7  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_7  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Multisite Ready</h3>
<p>The Facebook integration is made multisite-ready. So it is possible to have the same function working for each site from a single WordPress installation and integrate them seamlessly. We have also implemented to support separate Facebook pages for each multisite.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_8  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_3 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_5">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_9  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_1 et_animated et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/fbwc-project-image-big-c.jpg"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/fbwc-project-image-big-c.jpg" alt="" title="Automatic Facebook Centric Order System for WooCommerce" srcset="https://www.79mplus.com/assets/fbwc-project-image-big-c.jpg 800w, https://www.79mplus.com/assets/fbwc-project-image-big-c-300x212.jpg 300w, https://www.79mplus.com/assets/fbwc-project-image-big-c-768x541.jpg 768w, https://www.79mplus.com/assets/fbwc-project-image-big-c-510x360.jpg 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-497456"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_8  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>When we finished, we delivered a frictionless easy to use WordPress-WooCommerce-Facebook integration system that works automatically. Our client got a new feature to work with his sales and some very happy customers.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/facebook-ordering-woocommerce/">Automatic Facebook Centric Order System for WooCommerce</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/facebook-ordering-woocommerce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API</title>
		<link>https://www.79mplus.com/project/wc-xero-auto-invoicing/</link>
					<comments>https://www.79mplus.com/project/wc-xero-auto-invoicing/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Tue, 09 Oct 2018 05:41:19 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496910</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/wc-xero-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/wc-xero-auto-invoicing/">Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/wc-xero-auto-invoicing/">Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/wc-xero-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/wc-xero-auto-invoicing/">Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API</a></p>
<p><div class="et_pb_section et_pb_section_4 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_6">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_10  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_1 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_9  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-api-integration">Custom API Integration</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/woocommerce-xero-integration">WooCommerce Xero Integration</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a>, <a href="https://www.79mplus.com/project_category/xero">Xero</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_2 et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/wc-xero-banner.jpg" alt="" title="Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API" srcset="https://www.79mplus.com/assets/wc-xero-banner.jpg 1100w, https://www.79mplus.com/assets/wc-xero-banner-300x131.jpg 300w, https://www.79mplus.com/assets/wc-xero-banner-768x335.jpg 768w, https://www.79mplus.com/assets/wc-xero-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/wc-xero-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/wc-xero-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496916"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_5 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_7">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_11  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_10  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client wanted an Automated Invoice System for their WooCommerce Subscriptions based website with the help of the Xero API. They already had a system with Xero, but it was nearly manual and client had to change things for every invoice manually. They wanted everything to be handled more automatically. We love API integrations, so we couldn&#8217;t wait to get our hands into the project.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Bring in the Chart of Accounts for all products from Xero</li>
<li>Bring Tracking items from Xero</li>
<li>Prepare settings for Chart of Accounts to be linked with WC Subscription product</li>
<li>Add settings for line items on orders to apply Tracking Items to each one</li>
<li>Utilize WC Xero Integration plugin to push extra data to Xero</li>
<li>Make sure the whole integration works together to deliver an automated invoice system</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_6 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_8">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_12  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_11  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>There were both simple and complex elements to the project.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_9">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_13  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_12  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>WC Subscriptions Xero Integration</h3>
<p>To integrate Xero automation with the existing WC Subscription products, we had to link the products with appropriate Accounts and Tracking items on Xero. Client had Accounts for each of their products on Xero and Project Managers were saved as Tracking Items. So we had to work with both of them to achieve a total automation.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_14  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_13  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Chart of Accounts Integration</h3>
<p>To link the subscriptions with Accounts on Xero, we implemented a settings field that bring in all the Accounts from Xero. Appropriate Account can be set on the subscription edit page to be saved with the product. So we were able to assign the appropriate account on Xero whenever someone purchases the subscription, without having to set it from Xero like before.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_15  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_14  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Tracking Items Integration</h3>
<p>Line items needed to be assigned to a Project Manager which needed to be based on Tracking Items. Tracking items in Xero are similar to having Custom Fields with other APIs. So we fetched the previous values for the Tracking items into the line item settings and set the selection as a line item meta when order is saved.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_10">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_16  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_15  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Settings on Appropriate Places</h3>
<p>We added settings for Accounts on Subscription Edit page and Tracking Items on Order Edit page under the respective line items. The settings are contexually placed so that they are easy to understand and site administrators can easily maintain the system.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_17  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_16  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Integration with Existing Plugin</h3>
<p>Client was already using a WooCommerce Xero Integration plugin. While that eased our work a bit, we had to play along with the plugin to submit our custom contexual settings data into Xero. So we had to work on top of it to apply our customizations.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_18  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_7 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_11">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_19  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_3 et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/wc-xero-project-image-big.jpg"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/wc-xero-project-image-big.jpg" alt="" title="Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API" srcset="https://www.79mplus.com/assets/wc-xero-project-image-big.jpg 800w, https://www.79mplus.com/assets/wc-xero-project-image-big-300x212.jpg 300w, https://www.79mplus.com/assets/wc-xero-project-image-big-768x541.jpg 768w, https://www.79mplus.com/assets/wc-xero-project-image-big-510x360.jpg 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496914"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_17  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>At the end, the automation was successful. Now our client has a worry-free system working automatically without ever needing to login to Xero for basic settings. We implemented an automation that will hopefully save time and effort for our client.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/wc-xero-auto-invoicing/">Automated WC Subscriptions based Invoicing for Marketing Agency using Xero API</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/wc-xero-auto-invoicing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Stock Inventory Service Integration for Auto Parts based on Megabus API</title>
		<link>https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/</link>
					<comments>https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Fri, 17 Aug 2018 05:27:57 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496716</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/resume-featured-1.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/">Stock Inventory Service Integration for Auto Parts based on Megabus API</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/">Stock Inventory Service Integration for Auto Parts based on Megabus API</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/resume-featured-1.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/">Stock Inventory Service Integration for Auto Parts based on Megabus API</a></p>
<p><div class="et_pb_section et_pb_section_8 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_12">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_20  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_2 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Stock Inventory Service Integration for Auto Parts based on Megabus API</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_18  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-api-integration">Custom API Integration</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/megabus">Megabus</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/woocommerce">WooCommerce</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_4 et_animated et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/resume-banner-2.jpg" alt="" title="Stock Inventory Service Integration for Auto Parts based on Megabus API" srcset="https://www.79mplus.com/assets/resume-banner-2.jpg 1100w, https://www.79mplus.com/assets/resume-banner-2-300x131.jpg 300w, https://www.79mplus.com/assets/resume-banner-2-768x335.jpg 768w, https://www.79mplus.com/assets/resume-banner-2-1024x447.jpg 1024w, https://www.79mplus.com/assets/resume-banner-2-1080x471.jpg 1080w, https://www.79mplus.com/assets/resume-banner-2-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496738"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_9 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_13">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_21  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_19  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had a WooCommerce based website for selling auto parts. They wanted to use Megabus.com.au API to easily maintain and manage stock inventory of their products. So they were looking for an integration for Megabus with WooCommerce. They also wanted so that new orders are automatically updated to Megabus to show the latest inventory for managing product stocks.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Develop our own Megabus API Integration library</li>
<li>Implement Sync for new orders from WC to Megabus</li>
<li>Implement product sync with cron</li>
<li>Make PayPal payment confirmation to pass to Megabus</li>
<li>Testing the implementation carefully</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_10 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_14">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_22  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_20  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The project involved having a new API integration with a few details to be taken care of.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_15">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_23  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_21  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Megabus Integration</h3>
<p>No official code was available for the Megabus integration in PHP. There was no third party integration as well. So we had to scour through the Documentation and cook-up an implementation of our own. The implementation is based on SOAP access to the API.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_24  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_22  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Sync for New Orders</h3>
<p>Product stock quantity would have to match up with Megabus. To ensure that this happens, we had to send the new order data to Megabus for the stock quantity to be updated. We had to send the SKU to Megabus to ensure that the data is recognized by Megabus.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_25  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_23  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Product Sync with Cron</h3>
<p>When new product records came on Megabus, client wanted to update the products on WooCommerce to be similar on both ends. So we had to prepare a script to update products from Megabus and run that script occassionally to update the products on WC. The script had to utilize role based pricing to serve both retail and wholesale customers.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_16">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_26  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_24  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>PayPal Confirmation</h3>
<p>Client wanted so that order payments are handled by PayPal. When PayPal transaction is confirmed, we send the signal to Megabus API. Megabus API then handles the stock quantity accordingly.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_27  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_25  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Testing</h3>
<p>We had to test carefully and less frequently as possible because client could not provide us credentials to Megabus API for some company restrictions. We had to confirm each time we tested new orders. Later down the road we got a staging server, which made the testing process easier.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_28  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_11 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_17">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_29  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_5 et_animated et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/atoc-img.jpg"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/atoc-img.jpg" alt="" title="Stock Inventory Service Integration for Auto Parts based on Megabus API" srcset="https://www.79mplus.com/assets/atoc-img.jpg 800w, https://www.79mplus.com/assets/atoc-img-300x212.jpg 300w, https://www.79mplus.com/assets/atoc-img-768x541.jpg 768w, https://www.79mplus.com/assets/atoc-img-510x360.jpg 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496739"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_26  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>When we finished, we delivered an automated WooCommerce synchronization plugin for Megabus API. It simplified inventory management for the client.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/">Stock Inventory Service Integration for Auto Parts based on Megabus API</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/stock-inventory-service-integration-for-auto-parts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Custom Printable PDF Creator Plugin for WooCommerce</title>
		<link>https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/</link>
					<comments>https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Thu, 16 Aug 2018 10:50:07 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496728</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/custom-pdf-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/">Custom Printable PDF Creator Plugin for WooCommerce</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/">Custom Printable PDF Creator Plugin for WooCommerce</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/custom-pdf-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/">Custom Printable PDF Creator Plugin for WooCommerce</a></p>
<p><div class="et_pb_section et_pb_section_12 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_18">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_30  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_3 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Custom Printable PDF Creator Plugin for WooCommerce</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_27  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/woocommerce">WooCommerce</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_6 et_animated et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/custom-pdf-banner.jpg" alt="" title="Custom Printable PDF Creator Plugin for WooCommerce" srcset="https://www.79mplus.com/assets/custom-pdf-banner.jpg 1100w, https://www.79mplus.com/assets/custom-pdf-banner-300x131.jpg 300w, https://www.79mplus.com/assets/custom-pdf-banner-768x335.jpg 768w, https://www.79mplus.com/assets/custom-pdf-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/custom-pdf-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/custom-pdf-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496732"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_13 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_19">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_31  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_28  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client wanted a printable PDF product creator plugin. They wanted the admin to be able to upload an image and place text fields or dropdowns over it. They wanted to save it as a new product so that users can fill out those fields and make a printable version of the product with their customizations.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Implement a creation process of PDF templates as admin</li>
<li>Saving PDF templates as a custom product type</li>
<li>Make sure users can change the field values and generate PDFs for printing</li>
<li>Keep the user made design and inputs for reordering later</li>
<li>Make sure to abide by client restrictions</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_14 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_20">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_32  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_29  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The project had some integrations to do and strict guidelines to take note of.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_21">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_33  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_30  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Creation as Admin</h3>
<p>Client wanted an interface for the admins to create the custom products as templates. They wanted the ability to upload a 300 dpi image within the interface and place text field or dropdowns on the image. We have used standard WP Media structure, but used a custom image uploader so that the process is smoother to use.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_34  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_31  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>PDF Templates</h3>
<p>The designs made by admins should be stored as product template. These will be used later on frontend. We have implemented a custom template for these products. These products are shown later on using the templates.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_35  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_32  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Frontend Feature</h3>
<p>On frontend, client wanted to give users the ability to fill up the fields created earlier by admins. Users can fill up the field values are they want and then generate a printable PDF that he can print. We have used TCPDF for generating the PDF.</p>
<p>&nbsp;</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_22">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_36  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_33  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Store Customizations</h3>
<p>The customizations made by the user should be stored, so that the user can re-order the design when needed. We have added a serialized meta with the customization values to cart. The data eventually gets added to the order, to be re-ordered if needed.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_37  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_34  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Client Restrictions</h3>
<p>Client wanted our plugin to follow MVC structure and to keep frontend code seperate from the logic. They also wanted that we use TCPDF as our PDF generator library. We followed these guidelines when coding the plugin.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_38  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_15 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_23">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_39  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_7 et_animated et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/custom-pdf-project-image-big.png"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/custom-pdf-project-image-big.png" alt="" title="Custom Printable PDF Creator Plugin for WooCommerce" srcset="https://www.79mplus.com/assets/custom-pdf-project-image-big.png 800w, https://www.79mplus.com/assets/custom-pdf-project-image-big-300x212.png 300w, https://www.79mplus.com/assets/custom-pdf-project-image-big-768x541.png 768w, https://www.79mplus.com/assets/custom-pdf-project-image-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496730"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_35  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>When we finished, we delivered an automated system of custom products that can generate customized printable PDFs with the specifications from client. It simlified the process of getting and managing custom orders through WooCommerce.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/">Custom Printable PDF Creator Plugin for WooCommerce</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/custom-printable-pdf-creator-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions</title>
		<link>https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/</link>
					<comments>https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Thu, 16 Aug 2018 09:40:16 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496714</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/mailchimp-sync-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/">Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/">Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/mailchimp-sync-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/">Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions</a></p>
<p><div class="et_pb_section et_pb_section_16 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_24">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_40  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_4 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_36  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-api-integration">Custom API Integration</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/mailchimp">Mailchimp</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/woocommerce-subscriptions">WooCommerce Subscriptions</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_8 et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/mailchimp-sync-banner.jpg" alt="" title="Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions" srcset="https://www.79mplus.com/assets/mailchimp-sync-banner.jpg 1100w, https://www.79mplus.com/assets/mailchimp-sync-banner-300x131.jpg 300w, https://www.79mplus.com/assets/mailchimp-sync-banner-768x335.jpg 768w, https://www.79mplus.com/assets/mailchimp-sync-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/mailchimp-sync-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/mailchimp-sync-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496725"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_17 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_25">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_41  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_37  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had a WooCommerce Subscription based website. They wanted so that their customer email entries are synced with their MailChimp account. They also wanted so that the users are grouped under certain groups based on their subscription status.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Group users based on their subscription status in MailChimp</li>
<li>Change user group in MailChimp when their status changes</li>
<li>Ensure that integration respects MailChimp for WooCommerce, WC and WC Subscriptions</li>
<li>Implement a initial sync feature to synchronize 17000+ subscribers into MailChimp</li>
<li>Ensure backend settings for everything implemented</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_18 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_26">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_42  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_38  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The project was simple with some fair amount of details and a lot of testing ahead.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_27">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_43  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_39  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>User Groups</h3>
<p>Client had separate groups in mind for MailChimp. This was crucial to keep track of the 17000+ users they had on their MailChimp account. Each group for each status of the subscription. Users were there already but they were not grouped accordingly.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_44  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_40  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Groups Based on Status</h3>
<p>In a subscription based environment it is common to change status of the subscription. When subscription status changes, client wanted that the group of the user should change too, to sync with MailChimp better. We used hooks related to status change for this feature.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_45  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_41  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Support for Existing Setup</h3>
<p>Client had MailChimp for WooCommerce installed. It already had API information input, so we had to share the information with the plugin. We also had to make sure that we maintain a compatibility with the way the plugin lists users, so that it remains consistent.</p>
<p>&nbsp;</p>
<p>&nbsp;</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_28">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_46  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_42  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Initial Sync</h3>
<p>Our client had 17000+ users on their MailChimp account. It was already synced to MailChimp using MailChimp for WooCommerce plugin. But the group changes were not applied there. We can handle new ones, no problem. But we had to take care of those existing users. So we had we implement a Sync feature for those initial records.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_47  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_43  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Backend Settings</h3>
<p>We had to implement settings on the backend to allow for a better control. We implemented backend settings pages for the initial sync and MailChimp integration. We implemented pause resume feature for the initial sync so that the operation can be resumed for this lengthy task.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_48  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_19 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_29">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_49  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_9 et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/mailchimp-sync-project-image-big.png"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/mailchimp-sync-project-image-big.png" alt="" title="Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions" srcset="https://www.79mplus.com/assets/mailchimp-sync-project-image-big.png 800w, https://www.79mplus.com/assets/mailchimp-sync-project-image-big-300x212.png 300w, https://www.79mplus.com/assets/mailchimp-sync-project-image-big-768x541.png 768w, https://www.79mplus.com/assets/mailchimp-sync-project-image-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496726"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_44  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>At the end we delivered WC Subscription Sync system with automated grouping in MailChimp and initial sync feature. We hope it provided useful automation for our client.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/">Automatic Synchronization of Users with MailChimp for WooCommerce Subscriptions</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/automatic-synchronization-users-mailchimp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Strava API Integration for Runners based on SportsPress</title>
		<link>https://www.79mplus.com/project/strava-api-integration-for-runners/</link>
					<comments>https://www.79mplus.com/project/strava-api-integration-for-runners/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Thu, 16 Aug 2018 07:35:40 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496704</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/strava-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/strava-api-integration-for-runners/">Strava API Integration for Runners based on SportsPress</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/strava-api-integration-for-runners/">Strava API Integration for Runners based on SportsPress</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/strava-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/strava-api-integration-for-runners/">Strava API Integration for Runners based on SportsPress</a></p>
<p><div class="et_pb_section et_pb_section_20 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_30">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_50  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_5 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Strava API Integration for Runners based on SportsPress</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_45  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-api-integration">Custom API Integration</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/strava">Strava</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_10 et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/strava-banner.jpg" alt="" title="Strava API Integration for Runners based on SportsPress" srcset="https://www.79mplus.com/assets/strava-banner.jpg 1100w, https://www.79mplus.com/assets/strava-banner-300x131.jpg 300w, https://www.79mplus.com/assets/strava-banner-768x335.jpg 768w, https://www.79mplus.com/assets/strava-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/strava-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/strava-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496720"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_21 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_31">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_51  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_46  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client came to us with an interesting idea. They wanted to integrate Strava API which is an API that keeps and provides data about running or cycling activties into WordPress. They wanted a Leaderboard powered by SportsPress plugin to present the runners in a competitive list. They wanted the process to be as frictionless as possible to let the users compete in a virtual leaderboard.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Implement a user registration process to add the user to a team</li>
<li>Implement a connection between the user account and Strava API</li>
<li>Calculate points based on data and assign to user</li>
<li>Maintain a team structure throughout the project</li>
<li>Implement a display of the best performers in a Leaderboard</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_22 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_32">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_52  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_47  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The project had some insightful details and complex problems to solve.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_33">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_53  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_48  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>User Registration</h3>
<p>We were given the task to create a registration process for new users which will take the appropriate information needed for the implementation and also would ask for a Team. Team is simply a company in which the user is playing under.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_54  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_49  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Strava Integration</h3>
<p>Client wanted us to gain Strava information from user and use it for the integration. We used webhooks to fetch real time data from Strava API. The data is complex and had many activities related to it. We have processed the data to convert the activities into points.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_55  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_50  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Points Management</h3>
<p>Converting the data into points was done based on activities data that we retrieved from user&#8217;s Strava API access. We used formulas to determine points from the data. The points helped us rank the teams in leaderboard.</p>
<p>&nbsp;</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_34">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_56  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_51  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Team Structure</h3>
<p>Teams are in the essence of the whole project. All those complex user based data has been distilled into team data to make it easier to understand. Individual points were aggregated into teams and those teams were ranked later on. This is a grouping effort to make the data simpler and easier to understand.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_57  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_52  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Leaderboard</h3>
<p>Leaderboard is a list of teams arranged from the best to least performing earning points of the teams. SportsPress did not have support for the competition we implemented, so we had to hook into the way SportsPress displayed the Leaderboard.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_58  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_23 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_35">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_59  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_11 et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/strava-project-image-big.png"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/strava-project-image-big.png" alt="" title="Strava API Integration for Runners based on SportsPress" srcset="https://www.79mplus.com/assets/strava-project-image-big.png 800w, https://www.79mplus.com/assets/strava-project-image-big-300x212.png 300w, https://www.79mplus.com/assets/strava-project-image-big-768x541.png 768w, https://www.79mplus.com/assets/strava-project-image-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496718"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_53  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>When we finished, we delivered a automated user registration system, integrated with Strava to present the data intelligently, accompanied by a Team Leaderboard that encourages competition. An interesting system that the client has dreamed of.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/strava-api-integration-for-runners/">Strava API Integration for Runners based on SportsPress</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/strava-api-integration-for-runners/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Booking Customization on Training Sessions based on WooCommerce Bookings</title>
		<link>https://www.79mplus.com/project/booking-customization-on-training-sessions/</link>
					<comments>https://www.79mplus.com/project/booking-customization-on-training-sessions/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Tue, 14 Aug 2018 05:24:49 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496698</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/training-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/booking-customization-on-training-sessions/">Booking Customization on Training Sessions based on WooCommerce Bookings</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/booking-customization-on-training-sessions/">Booking Customization on Training Sessions based on WooCommerce Bookings</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/training-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/booking-customization-on-training-sessions/">Booking Customization on Training Sessions based on WooCommerce Bookings</a></p>
<p><div class="et_pb_section et_pb_section_24 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_36">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_60  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_6 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Booking Customization on Training Sessions based on WooCommerce Bookings</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_54  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/woocommerce-booking">WooCommerce Booking</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_12 et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/training-banner.jpg" alt="" title="Booking Customization on Training Sessions based on WooCommerce Bookings" srcset="https://www.79mplus.com/assets/training-banner.jpg 1100w, https://www.79mplus.com/assets/training-banner-300x131.jpg 300w, https://www.79mplus.com/assets/training-banner-768x335.jpg 768w, https://www.79mplus.com/assets/training-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/training-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/training-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496701"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_25 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_37">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_61  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_55  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had a website which sells bookings for training sessions to customers. They have the booking feature implemented with WooCommerce Bookings accompanied by some other plugins. But the system was not flawless. They wanted to send automatic invoices for unpaid bookings from the website, wanted a new order status that lets the client send some reminders to pay and also solve some Google Calendar sync issues with mobile devices to better monitor unpaid bookings.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Send invoice after a booked session time is passed automatically</li>
<li>Implement new order status that allows us to send reminder mails where users can pay</li>
<li>Implement Google Calendar sync for unpaid bookings</li>
<li>Bulk booking feature for booking timeslots in advance for a certain period of time</li>
<li>Test the implementations as real life customers</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_26 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_38">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_62  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_56  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The project had some insightful details and complex problems to solve.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_39">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_63  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_57  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Automatic Invoice</h3>
<p>When the session time for a booked timeslot is passed, client wanted to send automatic invoice messages to their users so that they don&#8217;t have to send it manually. For doing this automatically, we have created an internal file to run with a cronjob.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_64  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_58  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Custom Order Status</h3>
<p>Client wanted a special order status to be separate from other statuses. This status is like a dummy status that does not do anything. They wanted this status to be set to unpaid users. When this status is set, he will be reminded through messages to pay his dues.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_65  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_59  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Google Calendar Sync</h3>
<p>Client wanted to be notified through their Google Calendar about the new bookings so that they can see the bookings at a glance and prepare accordingly. We have used references to WC Bookings plugin&#8217;s ability to handle Google Calendar and applied tweaks to place events on the client&#8217;s calendar.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_40">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_66  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_60  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Bulk Booking</h3>
<p>We have implemented a Bulk Booking feature on top of WC Bookings. It allowed for a user to book some events in fixed timeslots for years in advance. This is a feature which was available in the backend for admins, but we had to mimic the same feature on frontend.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_67  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_61  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Testing Bookings</h3>
<p>Client insisted that we test the implementation with them. We lend a hand in testing the various complex booking situations that might occur. We found minor issues on the way and fixed them properly with code patches.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_68  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_27 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_41">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_69  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_13 et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/training-project-page-big.png"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/training-project-page-big.png" alt="" title="Booking Customization on Training Sessions based on WooCommerce Bookings" srcset="https://www.79mplus.com/assets/training-project-page-big.png 800w, https://www.79mplus.com/assets/training-project-page-big-300x212.png 300w, https://www.79mplus.com/assets/training-project-page-big-768x541.png 768w, https://www.79mplus.com/assets/training-project-page-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496702"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_62  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>At the end, we delivered an automated system that syncs to client&#8217;s Google Calendar, keeps track of unpaid bookings, and sends reminders when necessary. A system what client client wanted for many days.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/booking-customization-on-training-sessions/">Booking Customization on Training Sessions based on WooCommerce Bookings</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/booking-customization-on-training-sessions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Customized Course Management with LearnPress and Gravity Forms</title>
		<link>https://www.79mplus.com/project/customized-course-management-with-learnpress/</link>
					<comments>https://www.79mplus.com/project/customized-course-management-with-learnpress/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Mon, 13 Aug 2018 06:06:48 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496656</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/learnpress-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/customized-course-management-with-learnpress/">Customized Course Management with LearnPress and Gravity Forms</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/customized-course-management-with-learnpress/">Customized Course Management with LearnPress and Gravity Forms</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/learnpress-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/customized-course-management-with-learnpress/">Customized Course Management with LearnPress and Gravity Forms</a></p>
<p><div class="et_pb_section et_pb_section_28 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_42">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_70  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_7 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Customized Course Management with LearnPress and Gravity Forms</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_63  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/gravity-forms">Gravity Forms</a>, <a href="https://www.79mplus.com/project_category/learnpress">LearnPress</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_14 et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/learnpress-banner.jpg" alt="" title="Customized Course Management with LearnPress and Gravity Forms" srcset="https://www.79mplus.com/assets/learnpress-banner.jpg 1100w, https://www.79mplus.com/assets/learnpress-banner-300x131.jpg 300w, https://www.79mplus.com/assets/learnpress-banner-768x335.jpg 768w, https://www.79mplus.com/assets/learnpress-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/learnpress-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/learnpress-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496660"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_29 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_43">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_71  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_64  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had a LearnPress based course management system. They wanted better control over the courses they offer. They wanted manual approval of new enrolments, custom user roles for new students, student based separate instructors, custom handling of course completion etc. There were many things to implement so we got into coding.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Make the Gravity Forms for enrolment, apply for a course etc. to integrate with our plugin</li>
<li>Implement a feature so that client can manually approve a student for enrolment</li>
<li>Create and manage user roles automatically</li>
<li>Make courses available to one exclusively for that user and none other</li>
<li>Generate a dynamic pdf certificate from the given information</li>
<li>Implement a certificate request feature with pdf certificate emailing</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_30 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_44">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_72  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_65  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The requirements were not hard, but needed a lot of coding and testing before we got this right.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_45">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_73  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_66  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Enrolment</h3>
<p>When student applies with a Gravity Form with their name, it places the request for an website admin. We detected this form fillup and we sent a request for the admin to accept it. Website admin manually reviews the request and accepts if satisfactory.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_74  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_67  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Custom User Roles</h3>
<p>Client explicitly requested that when new students register with their name, a new user role should be created with his name. They wanted so that they can distinguish the particular student separately and show him exclusive courses.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_75  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_68  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>User Separation</h3>
<p>A course is limited to a student by his user role. Client requested that one student cannot access courses designed for other students. So their courses are separate per user.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_46">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_76  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_69  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Certificate Generation</h3>
<p>Certificate is generated dynamically on the server. We have prepared an automated system that generates the certificate with the student&#8217;s information. We have used dompdf as the pdf library for this feature.</p>
<p>&nbsp;</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_77  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_70  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Course Completion Email</h3>
<p>When a student completes his courses, he is guided to click a button to manually mark the courses complete. This action emails the student with the dynamically generated certificate attached to it.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_78  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_31 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_47">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_79  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_15 et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/learnpress-project-image-big.png"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/learnpress-project-image-big.png" alt="" title="Customized Course Management with LearnPress and Gravity Forms" srcset="https://www.79mplus.com/assets/learnpress-project-image-big.png 800w, https://www.79mplus.com/assets/learnpress-project-image-big-300x212.png 300w, https://www.79mplus.com/assets/learnpress-project-image-big-768x541.png 768w, https://www.79mplus.com/assets/learnpress-project-image-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496658"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_71  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>When we finished, we delivered a semi-automatic system for learning with LearnPress and Gravity Forms. We hope it aids in the learning of many.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/customized-course-management-with-learnpress/">Customized Course Management with LearnPress and Gravity Forms</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/customized-course-management-with-learnpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Photography Image Gallery Modifications for NextGEN Gallery</title>
		<link>https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/</link>
					<comments>https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Fri, 10 Aug 2018 05:37:06 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496641</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/ngg-gallery-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/">Photography Image Gallery Modifications for NextGEN Gallery</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/">Photography Image Gallery Modifications for NextGEN Gallery</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/ngg-gallery-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/">Photography Image Gallery Modifications for NextGEN Gallery</a></p>
<p><div class="et_pb_section et_pb_section_32 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_48">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_80  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_8 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Photography Image Gallery Modifications for NextGEN Gallery</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_72  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/nextgen-gallery">NextGEN Gallery</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_16 et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/ngg-gallery-banner.jpg" alt="" title="Photography Image Gallery Modifications for NextGEN Gallery" srcset="https://www.79mplus.com/assets/ngg-gallery-banner.jpg 1100w, https://www.79mplus.com/assets/ngg-gallery-banner-300x131.jpg 300w, https://www.79mplus.com/assets/ngg-gallery-banner-768x335.jpg 768w, https://www.79mplus.com/assets/ngg-gallery-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/ngg-gallery-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/ngg-gallery-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496645"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_33 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_49">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_81  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_73  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had a NextGEN Gallery based website of photos. The photos could be printed as well with a price from the website. They didn&#8217;t like the way the photos were being shown by default. They wanted to apply some changes so that it is more comfortable to use and artful at the same time. They wanted a fullscreen gallery for an immersive experience and some other modifications to serve as a perfect photo gallery.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Implement a custom page template for a fullscreen gallery in photowall style</li>
<li>Implement a feature for creating a fullscreen page from within NextGEN gallery page</li>
<li>Ensure preview image will automatically set to featured image in fullscreen page</li>
<li>Ensure gallery List will display the featured image from fullscreen page</li>
<li>Implement a custom gallery overview template</li>
<li>Cancel the theme&#8217;s default lightbox and show the lightbox from NextGEN</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_34 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_50">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_82  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_74  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>The requirements were frontend, but we had to look into backend as well.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_51">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_83  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_75  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Fullscreen Gallery</h3>
<p>We implemented the ability to create a page with fullscreen gallery, from within NextGEN gallery. We found out that the best way to do this would be to create a page template, so that other header-footer and various changes remain. We created a custom page template to be set as template when a new page is created for a gallery. The photowall style helps to complete the effect.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_84  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_76  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Preview Image</h3>
<p>Client sets usually the best image as a preview image. So they wanted it to be the featured image on the fullscreen page. It does not happen automatically, so they wanted us to make it happen. Eventually the preview image gets shown as the cover image for the album, which saved our client from a lot of manual settings.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_85  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_77  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Gallery List Images</h3>
<p>NextGEN Gallery has its own style of showing image covers for its albums. We customized the album cover images with the image set as the featured image in the fullscreen page type. It has let the client enjoy flexibility for showing the exact image they want for the album. We have implemented this feature in our custom template.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_52">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_86  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_78  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Custom Template</h3>
<p>We have combined our solutions into a custom gallery overview template. The template overrides the original NextGEN gallery template with ours. We had to find a way to trick WordPress cache so that it uses the custom template from our plugin.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_87  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_79  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Lightbox Changes</h3>
<p>The Darkroom theme does a great job of integrating into NextGEN gallery lightbox. It replaces the lightbox to its own from the theme. Our client wanted to get back the NextGEN version of the lightbox for their website. It also shows the cart nicely on the sidebar when someone adds a photo into cart.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_88  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_35 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_53">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_89  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_17 et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/booked-fix-project-image-bi.jpg"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/ngg-gallery-project-image-big.png" alt="" title="Photography Image Gallery Modifications for NextGEN Gallery" srcset="https://www.79mplus.com/assets/ngg-gallery-project-image-big.png 800w, https://www.79mplus.com/assets/ngg-gallery-project-image-big-300x212.png 300w, https://www.79mplus.com/assets/ngg-gallery-project-image-big-768x541.png 768w, https://www.79mplus.com/assets/ngg-gallery-project-image-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496643"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_80  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>At the end we were thankfully able to put everything inside our plugin. The plugin improved the presentation of the website to a great extent. We were happy with the achievements and our client was too.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/">Photography Image Gallery Modifications for NextGEN Gallery</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/photography-image-gallery-modifications-nextgen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Geo Proximity based Pizza Ordering System using Google Maps API</title>
		<link>https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/</link>
					<comments>https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/#respond</comments>
		
		<dc:creator><![CDATA[79mplus Admin]]></dc:creator>
		<pubDate>Tue, 07 Aug 2018 04:43:30 +0000</pubDate>
				<guid isPermaLink="false">https://www.79mplus.com/?post_type=project&#038;p=496616</guid>

					<description><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/geo-proximity-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/">Geo Proximity based Pizza Ordering System using Google Maps API</a></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/">Geo Proximity based Pizza Ordering System using Google Maps API</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></description>
										<content:encoded><![CDATA[<p><a rel="nofollow" href="https://www.79mplus.com">79mplus</a><br />
<img src="https://www.79mplus.com/assets/geo-proximity-featured.jpg" style="display: block; margin: 1em auto"><br />
<a rel="nofollow" href="https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/">Geo Proximity based Pizza Ordering System using Google Maps API</a></p>
<p><div class="et_pb_section et_pb_section_37 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_54">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_90  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_post_title et_pb_post_title_9 et_pb_bg_layout_light  et_pb_text_align_center"   >
				
				
				
				
				
				<div class="et_pb_title_container">
					<h1 class="entry-title">Geo Proximity based Pizza Ordering System using Google Maps API</h1>
				</div>
				
			</div><div class="et_pb_module et_pb_text et_pb_text_81  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><div class="project_categories mplus"><a href="https://www.79mplus.com/project_category/anything-backend">Anything Backend</a>, <a href="https://www.79mplus.com/project_category/custom-api-integration">Custom API Integration</a>, <a href="https://www.79mplus.com/project_category/custom-plugin-development">Custom Plugin Development</a>, <a href="https://www.79mplus.com/project_category/google-maps-api">Google Maps API</a>, <a href="https://www.79mplus.com/project_category/plugin-customization">Plugin Customization</a>, <a href="https://www.79mplus.com/project_category/plugins">Plugins</a>, <a href="https://www.79mplus.com/project_category/project">Project</a>, <a href="https://www.79mplus.com/project_category/woocommerce">WooCommerce</a>, <a href="https://www.79mplus.com/project_category/wordpress">WordPress</a></div></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_18 et_animated et-waypoint">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="1100" height="480" src="https://www.79mplus.com/assets/geo-proximity-banner.jpg" alt="" title="Geo Proximity based Pizza Ordering System using Google Maps API" srcset="https://www.79mplus.com/assets/geo-proximity-banner.jpg 1100w, https://www.79mplus.com/assets/geo-proximity-banner-300x131.jpg 300w, https://www.79mplus.com/assets/geo-proximity-banner-768x335.jpg 768w, https://www.79mplus.com/assets/geo-proximity-banner-1024x447.jpg 1024w, https://www.79mplus.com/assets/geo-proximity-banner-1080x471.jpg 1080w, https://www.79mplus.com/assets/geo-proximity-banner-510x223.jpg 510w" sizes="(max-width: 1100px) 100vw, 1100px" class="wp-image-496623"></span>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_38 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_55">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_91  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_82  et_pb_text_align_left et_pb_bg_layout_dark">
				
				
				
				
				<div class="et_pb_text_inner"><h2>Challenge</h2>
<p>Our client had a pizza delivery website and wanted to implement a pizza ordering system which would utilize geo proximity to detect nearest pizza stores to order from. Before ordering, user would input his postcode in a form. In order to determine the nearest ones, we would have to get the distance from each shop using Google Maps API and show them on screen. There was also some design mockups and multilingual requirements within the project.</p>
<p><strong>Our task mainly was to:</strong></p>
<ul>
<li>Implement a shortcode for step by step process</li>
<li>Implement separate forms or screens for Delivery or Take-out</li>
<li>Implement list for Take-outs which shows nearest stores first</li>
<li>Ensure that the whole interface adheres to localization (with WPML)</li>
<li>Ensure that it is easy to add, modify, delete stores</li>
<li>Make sure backend shows order info (Take-out/Delivery, customer details etc.)</li>
<li>Implement an email to concerned store when an order is put on that store</li>
<li>Make sure that the process is ajaxified as much as possible</li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_39 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_56">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_92  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_83  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h1>Our Solution</h1>
<p>There were both simple and complex elements to the project. We solved them one by one.</p>
<p>Here’s how we solved the problem:</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_57">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_93  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_84  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Delivery and Take-out</h3>
<p>We implemented a shortcode to show a choice for Delivery and Take-out. This shortcode was responsible to handle both the order processes. Take-out shows all the shops and Delivery asks for a postcode and eventually shows nearest shops based on the shortcode. We also had to show error screens when there was no shops open at the time of ordering.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_94  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_85  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Displaying Nearest Stores</h3>
<p>On the Delivery option of the implementation we had to utilize Google Maps API to get the closest stores based on the postcode input and the store&#8217;s latitude-longitude. The API allowed us to support virtually any postcode input inside the process.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_95  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_86  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Multilingual Support</h3>
<p>At the time of coding, we had to explicitly remember to put localization functions on the plugin to be able to make it support translation. We also had to implement separate urls for separate shops for separate languages. We had to iterate through the languages active on WPML to show fields for all the languages.</p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_58">
				<div class="et_pb_column et_pb_column_1_3 et_pb_column_96  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_87  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Powering with Ajax</h3>
<p>To make the process faster, we had to implement ajax in every step on the frontend. The website already used loads of plugins to handle different functionalities. Using cache plugin did not work either. So we had to ajaxify the whole process to make it faster.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_97  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_88  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Backend Features and Email</h3>
<p>We have integrated the order information to backend interfaces to make it work as a whole. Order type, customer information etc. are shown on the WooCommerce Order screens, Emails are sent to the particular store email address when customer orders from that store and many more.</p></div>
			</div>
			</div><div class="et_pb_column et_pb_column_1_3 et_pb_column_98  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty">
				
				
				
				
				
			</div>
				
				
				
				
			</div>
				
				
			</div><div class="et_pb_section et_pb_section_40 et_pb_with_background et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_59">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_99  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_19 et_animated et-waypoint">
				
				
				
				
				<a href="https://www.79mplus.com/assets/booked-fix-project-image-bi.jpg"><span class="et_pb_image_wrap "><img decoding="async" width="800" height="564" src="https://www.79mplus.com/assets/geo-proximity-project-image-big.png" alt="" title="Geo Proximity based Pizza Ordering System using Google Maps API" srcset="https://www.79mplus.com/assets/geo-proximity-project-image-big.png 800w, https://www.79mplus.com/assets/geo-proximity-project-image-big-300x212.png 300w, https://www.79mplus.com/assets/geo-proximity-project-image-big-768x541.png 768w, https://www.79mplus.com/assets/geo-proximity-project-image-big-510x360.png 510w" sizes="(max-width: 800px) 100vw, 800px" class="wp-image-496620"></span></a>
			</div><div class="et_pb_module et_pb_text et_pb_text_89  et_pb_text_align_center et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h3>Putting it all together</h3>
<p>We delivered the project to client. We delivered a Geo Proximity enabled delivery system which respects customer&#8217;s time. Client had some helpful feedbacks on the way which made the project even better to use.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div></p>
<p>The post <a rel="nofollow" href="https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/">Geo Proximity based Pizza Ordering System using Google Maps API</a> appeared first on <a rel="nofollow" href="https://www.79mplus.com">79mplus</a> and is written by <a rel="nofollow" href="https://www.79mplus.com/author/79mplus_admin/">79mplus Admin</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.79mplus.com/project/geo-proximity-based-pizza-ordering/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
