Reputation: 423
After importing my production WordPress-associated website to my local Xampp environment, I get this error:
Fatal error: Uncaught Error: Call to undefined function is_product() in C:\xampp\htdocs\public_html\siliconharvest\wp-content\themes\storefront-child\functions.php:62 Stack trace: #0 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\class-wp-hook.php(286): wc_variable_simple_conditions('') #1 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\class-wp-hook.php(310): WP_Hook->apply_filters(NULL, Array) #2 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\plugin.php(453): WP_Hook->do_action(Array) #3 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\general-template.php(2614): do_action('wp_head') #4 C:\xampp\htdocs\public_html\siliconharvest\wp-content\themes\storefront\header.php(18): wp_head() #5 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\template.php(688): require_once('C:\xampp\htdocs...') #6 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\template.php(647): load_template('C:\xampp\htdocs...', true) #7 C:\xampp\htdocs\public_html\siliconharvest\wp-includes\general-template.php( in C:\xampp\htdocs\public_html\siliconharvest\wp-content\themes\storefront-child\functions.php on line 62
I have attempted the following diagnostic steps, with no effect on the error:
Yet the error persists regardless of any of the above steps. The correct solution must make all these errors go away.
Edit: lines 1-73 of the functions.php file referenced in the error:
<?php
// BEGIN Remove "Storefront Designed by WooThemes" from Footer as per https://danielsantoro.com/remove-storefront-designed-woothemes/
add_action('init', 'custom_remove_footer_credit', 10);
function custom_remove_footer_credit()
{
remove_action('storefront_footer', 'storefront_credit', 20);
add_action('storefront_footer', 'custom_storefront_credit', 20);
}
function custom_storefront_credit()
{
?>
<div class="site-info">
<div class="deferred-menu-items">
<ul style="list-style-type: none;" class="footer-menu">
<li style="display:inline-block" class="menu-item-156"><a href="/about/">About Us</a></li><!--
--><li style="display:inline-block" class="menu-item-189"><a href="/faq/">FAQ</a></li><!--
--><li style="display:inline-block" class="fa-delivery"><a href="/delivery/">Delivery</a></li><!--
--><li style="display:inline-block" class="fa-returns"><a href="/returns/">Returns</a></li><!--
--><li style="display:inline-block" class="menu-item-464"><a href="/store-policies/"><i class="far fa-handshake"></i> Store Policies</a></li><!--
--><!--<li style="display:inline-block" class="menu-item-1024"><a href="/articles/">Articles</a></li>--><!--
--><li style="display:inline-block" class="affiliates"><a href="/about-the-silicon-harvest-affiliates-program/"><i class="fas fa-bullhorn"></i> Affiliates Programme</a></li>
<!--<li style="display:inline-block" class="fa-opas"><a href="/overseas-parts-acquisition-service-opas/">Overseas Parts Acquisition Service (OPAS)</a></li>-->
</ul>
</div>
© <?php
echo get_bloginfo('name') . ' ' . get_the_date('Y') . ' | ABN: 31 022 705 565 | <a style="color:blue" href="/terms-of-service-and-privacy-policy/">Terms of Service/Privacy Policy</a> <div class="front-page-contact">
<a style="color:blue" href="/contact-us/#aggs-contact-form">Contact Form</a> | mob: 0424 214 930 | tel: (02) 8007 6871 <!--| mob: +61 424 214 930 (international) / tel: +612 8007 6871 -->| <a style="color:blue" href="mailto:[email protected]">[email protected]</a><br />Live contact hours from 9am-9pm (AEST/AEDT or Sydney/Melbourne/ACT/TAS time), Mon-Sun</div>';
?>
</div><!-- .site-info -->
<?php
}
// END Remove "Storefront Designed by WooThemes" from Footer
/* START add microdata relating to item condition to satisfy Google Merchant's optional advice - as per https://github.com/woocommerce/woocommerce/issues/15797#issuecomment-355744594 */
add_filter('woocommerce_structured_data_product_offer', 'filter_woocommerce_structured_data_product', 10, 2);
/**
* Add properties to the http://schema.org/Offer markup for all products.
*/
function filter_woocommerce_structured_data_product($markup, $product)
{
/* By default, we assume all products sold in the ecommerce are in new condition */
if (empty($markup['itemCondition'])) {
$markup['itemCondition'] = 'http://schema.org/NewCondition';
}
return $markup;
}
/* END add microdata */
// as per https://wordpress.stackexchange.com/questions/276941/woocommerce-add-extra-field-to-variation-product/277556
// based on http://www.remicorson.com/woocommerce-custom-fields-for-variations/
//THESE ACTIONS AND FILTER HANDLE YOUR PRODUCT VARIATION FIELDS + add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' ); which you have inserted into a conditional
add_action('woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3);
add_action('woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2);
add_action('wp_head', 'wc_variable_simple_conditions');
function wc_variable_simple_conditions()
{
if (is_product()) {
global $post;
$post_id = $post->ID;
$product = wc_get_product($post_id);
$type = $product->get_type();
if ($type == 'variable') {
add_filter('woocommerce_available_variation', 'load_variation_settings_fields');
} elseif ($type == 'simple') {
add_action('woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 41);
}
}
}
The line if (is_product()) {
is line 62.
Upvotes: 5
Views: 18478
Reputation: 1436
First check if woocommerce activated then call function:
add_action('wp_head', 'wc_variable_simple_conditions');
function wc_variable_simple_conditions(){
if (!class_exists('WooCommerce')) return; // add this line
if (is_product()) {
global $post;
$post_id = $post->ID;
$product = wc_get_product($post_id);
$type = $product->get_type();
if ($type == 'variable') {
add_filter('woocommerce_available_variation', 'load_variation_settings_fields');
} elseif ($type == 'simple') {
add_action('woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 41);
}
}
}
Upvotes: 5
Reputation: 16
Can you try following things if it works?
Try to update theme if new update exist for theme.
If woo commerce folder exists inside active theme folder then rename that woocommerce folder and check it.
Upvotes: 0
Reputation: 365
You could try this:
add_action('wp_head', 'wc_variable_simple_conditions');
function wc_variable_simple_conditions() {
if (is_singular( array( 'product' ) )) {
global $post;
$post_id = $post->ID;
$product = wc_get_product($post_id);
$type = $product->get_type();
if ($type == 'variable') {
add_filter('woocommerce_available_variation', 'load_variation_settings_fields');
} elseif ($type == 'simple') {
add_action('woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 41);
}
}
}
If you get errors maybe the custom post type 'product' doesn't exist.
Upvotes: 0
Reputation: 137
Try replacing your function with this:
function wc_variable_simple_conditions()
{
if ( !function_exists( 'is_product' ) ) {
return;
}
if (is_product()) {
global $post;
$post_id = $post->ID;
$product = wc_get_product($post_id);
$type = $product->get_type();
if ($type == 'variable') {
add_filter('woocommerce_available_variation', 'load_variation_settings_fields');
} elseif ($type == 'simple') {
add_action('woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 41);
}
}
}
Upvotes: 0
Reputation: 2401
Make sure that you include
source of this function includes/wc-conditional-functions.php
http://woocommerce.wp-a2z.org/oik_api/is_product/
Upvotes: 0