Skip to content

Instantly share code, notes, and snippets.

View EricBusch's full-sized avatar

Eric Busch EricBusch

  • Owen Sound, Ontario
View GitHub Profile
@EricBusch
EricBusch / replace-placeholder-with-affiliate-id-in-product-url.php
Created April 5, 2017 13:49 — forked from EricBusch/replace-placeholder-with-affiliate-id-in-product-url.php
Use this code to replace the "@@@" placeholder in the "url" field with your affiliate network affiliate ID. [datafeedr]
<?php
/**
* Map each affiliate network ID to your affiliate ID for that network.
*
* In this example, Commission Junction's network ID is 3 and my Commission
* Junction affiliate ID is '321321321'.
*/
$affiliate_ids = array(
3 => '321321321', // Commission Junction Affiliate ID.
@EricBusch
EricBusch / change-currency-symbol-to-match-products-currency-code.php If you have set the default currency code in your WooCommerce settings but are displaying some products which use a different currency, here's how to replace the default currency symbol with the currency provided in the original data feed.
<?php
/**
* Change the currency symbol for the WooCommerce product to match the currency
* of the product supplied by the Datafeedr API.
*
* @see dfrapi_currency_code_to_sign()
* @global WC_Product $product
*
* @param string $currency_symbol Current currency symbol.
@EricBusch
EricBusch / replace-wordpress-search-results-with-results-from-datafeedr-api.php This code replaces the default functionality of the WordPress search form. If a search is entered into the WordPress search form, this "hijacks" the request and redirects the request to your custom search page. Then it takes the search query and passes it to the Datafeedr API. The results are returned and displayed.
<?php
/**
* THIS IS THE ONLY REQUIRED MODIFICATION!!!
*
* 1. GO HERE WordPress Admin Area > Pages > Add New
* 2. CREATE A NEW PAGE TO BE USED FOR DISPLAYING SEARCH RESULTS.
* 3. REPLACE "123" BELOW WITH THE ID OF YOUR NEW PAGE.
*
* Return the ID of the page to be used to display the search results.
@EricBusch
EricBusch / add-custom-attribute-for-product-insert-only.php
Last active May 2, 2018 13:59 — forked from EricBusch/add-custom-attribute-for-product-insert-only.php
Add a product specific custom attribute only on first import. These are not attributes that will be filterable via the WooCommerce Layered Nav. These attributes are stored specifically for a product. [datafeedr][dfrpswc]
<?php
/**
* Add the custom attribute label "Special Promotion" to a product.
*
* @param array $attributes An array attributes.
* @param array $post An array of post data including ID, post_title, post_status, etc...
* @param array $product An array of product data returned from the Datafeedr API.
* @param array $set A post array for this Product Set with an array key of postmeta containing all post meta data.
* @param string $action The action the Product Set is performing. Value are either "insert" or "update".
@EricBusch
EricBusch / add-rel-nofollow-to-woocommerce-product-links.php
Created July 25, 2017 12:22 — forked from EricBusch/add-rel-nofollow-to-woocommerce-product-links.php
This code allows you to add a rel="nofollow" to your WooCommerce products that appear in the loop. [datafeedr]
@EricBusch
EricBusch / add-merchant-logo-to-loop.php
Last active November 3, 2017 15:11 — forked from EricBusch/add-merchant-logo-to-loop.php
This code will add the merchant logo (if the logo exists) to the loop between product thumbnail and product name. [datafeedr]
<?php
/**
* Add merchant logo (if it exists) to the Loop between product thumbnail and product name.
*/
add_action( 'woocommerce_before_shop_loop_item_title', 'mycode_add_merchant_logo_to_loop', 20 );
function mycode_add_merchant_logo_to_loop() {
global $product;
if ( dfrpswc_is_dfrpswc_product( $product->get_id() ) ) {
$postmeta = get_post_meta( $product->get_id(), '_dfrps_product', true );
@EricBusch
EricBusch / add-merchant-logo-to-product-details-page.php
Last active January 3, 2018 14:17 — forked from EricBusch/add-merchant-logo-to-product-details-page.php
This code will add the merchant logo (if the logo exists) to the WooCommerce single product page. [datafeedr]
<?php
/**
* Add merchant logo (if it exists) to product details page.
*
* This displays the merchant's logo before the [buy now] button on
* single product detail pages.
*
* @global WC_Product $product
*/
@EricBusch
EricBusch / import-product-image-during-product-set-update.php
Created July 25, 2017 12:23 — forked from EricBusch/import-product-image-during-product-set-update.php
Import a product's image during a Product Set import/update instead of after the product is imported. Use with CAUTION. This may cause product imports to be drastically slower or fail. [datafeedr][dfrpswc]
<?php
/**
* Import a product's image during a Product Set import/update instead
* of after the product is imported.
*
* Use with CAUTION. This may cause product imports to be drastically slower or fail.
*
* @see do_action_ref_array(), get_post()
*
@EricBusch
EricBusch / move_comparison_set_immediately_below_product_title.php
Created July 25, 2017 12:23 — forked from EricBusch/move_comparison_set_immediately_below_product_title.php
This code removes a Datafeedr Comparison Set from appearing below the product's details on the WooCommerce product page and adds it immediately below the product's title on single product pages.
<?php
/**
* Remove Comparison Sets from WooCommerce Product pages.
*
* @see remove_action(), dfrcs_wc_compset_priority()
*/
add_action( 'wp_head', 'mycode_remove_compset_from_woocommerce_product_pages' );
function mycode_remove_compset_from_woocommerce_product_pages() {
remove_action( 'woocommerce_after_single_product_summary', 'dfrcs_wc_single_product_page_compset', 0 );
@EricBusch
EricBusch / call-the_content-filter-once-only.php
Last active December 2, 2017 20:54 — forked from EricBusch/call-the_content-filter-once-only.php
This is an example for ensuring your content filter function is called once and only once during the page load of a single Post|Page|Product|etc... This is useful when you need to modify the $content via the 'the_content' filter but you don't want to perform the process more than once because it's server and/or time intensive.
<?php
/**
* Example of how to execute the "the_content" filter ONLY once.
*
* @param string $content
*
* @return string $content
*/
function mycode_the_content( $content ) {