How JustAnswer Works:
  • Ask an Expert
    Experts are full of valuable knowledge and are ready to help with any question. Credentials confirmed by a Fortune 500 verification firm.
  • Get a Professional Answer
    Via email, text message, or notification as you wait on our site.
    Ask follow up questions if you need to.
  • 100% Satisfaction Guarantee
    Rate the answer you receive.
Ask Steve Your Own Question
Steve
Steve, Consultant
Category: Programming
Satisfied Customers: 289
Experience:  Steve is a consultant in the areas of computer software and programming, information management and networking.
47680681
Type Your Programming Question Here...
Steve is online now
A new question is answered every 9 seconds

I am trying to add custom tabs using php into a wordpress

Customer Question

I am trying to add custom tabs using php into a wordpress site. Inside these tabs I want to fetch information from custom product fields. Here is my code but I am getting a bad "callback" error // Add Product Tabs
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98);
function woo_remove_product_tabs( $tabs ){
unset($tabs['reviews']);
// Product Tabs
$tabs['finishes'] = array(
'title'=> "Finishes",
'priority'=> 15,
'callback'=>'show_finishes');
$tabs['specs'] = array(
'title'=> "Specs",
'priority'=> 20,
'callback'=>'show_specs');
$tabs['certifications'] = array(
'title'=> "Certifications",
'priority'=> 25,
'callback'=>'show_certifications');
return $tabs;
function show_finishes(){}
function show_specs(){
$url = get_field( "specs" );if( $url ) {
echo $url;
} else {
echo 'empty';
}
}
function show_certifications(){
echo "this is a test";
}
}
JA: What programs and versions are you using?
Customer: I do not know php at all. I am using dreamweaver code editor.
JA: What is your ideal outcome? How can we solve this for you?
Customer: just for someone to review my code and see why the error is there and guide me through one more little step
JA: Anything else you want the programmer to know before I connect you?
Customer: no
Submitted: 8 months ago.
Category: Programming
Expert:  George Sibiya replied 8 months ago.

Hi,

Welcome to JustAnswer and thank you for utilizing our services.

I am trying your code on my site and will update you or ask questions if need be.

Regards,

G

Customer: replied 8 months ago.
here is some more detailed explainations
Problem#1.
I have added custom tabs (Finishes, Specs & Certifications) to every product (general woo commerce product coding, my coding is below and files are attached)I am getting a callback error
(Warning: call_user_func() expects parameter 1 to be a valid callback, function 'show_finishes' not found or invalid function name in /home/wwwbrdonline/cmiproduct.brdonline.com/wp-content/plugins/woocommerce/templates/single-product/tabs/tabs.php on line 43)
basically this needs to work in order to display the content inside the tab. It should be working by my logic but it isn’t. The original tab (description is still working)this is the live page to see the horizontal tabs and the error its displaying - http://cmiproduct.brdonline.com/product/12-inch-single-handle-faucet-in-chrome/once this is fixed, I should be able to work on problem two :) I have color coded problem 1 & 2 separately in the code to help describe this.Problem #2
Advanced Custom Field Plugin - Using the example code below, I don’t know really how to implement url values, image values, and file value (.ie if my custom field (‘specs’) has a link to a pdf file i am not sure how to use ‘$file' value and actual get that file into my tab. (my coding for my tabs is done and working, except for problem 1)
this is the code example for the plugin i am using. The plugin in adds extra fields beyond the general product fields that you had code to.https://www.advancedcustomfields.com/resources/code-examples/// Add Product Tabs
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98);
function woo_remove_product_tabs( $tabs ){
unset($tabs['reviews']);
// Product Tabs
$tabs['finishes'] = array(
'title'=> "Finishes",
'priority'=> 15,
'callback'=>'show_finishes');
$tabs['specs'] = array(
'title'=> "Specs",
'priority'=> 20,
'callback'=>'show_specs');
$tabs['certifications'] = array(
'title'=> "Certifications",
'priority'=> 25,
'callback'=>'show_certifications');
return $tabs;
function show_finishes(){}
function show_specs(){
$url = get_field( "specs" );if( $url ) {
echo $url;
} else {
echo 'empty';
}
}
function show_certifications(){
echo "this is a test";
}
}
Expert:  George Sibiya replied 8 months ago.

Ok thanks

Expert:  George Sibiya replied 8 months ago.

In which file are these callback functions located and do you include the file in the functions.php of your theme?

Customer: replied 8 months ago.
they are located in functions.php but the original callback & tab coding is in tabs.php
I tried to upload both files but this web site wouldn't let me upload. (couldn't read file format) wait, I will try to .zip both files, there we go. Attached!
Customer: replied 8 months ago.
my coding is incomplete right where it is trying to "get_field" If value, etc. I didn't know what to do at that point.
Expert:  George Sibiya replied 8 months ago.

Thanks. It may have been failing to see them because they are nested inside another function. Please try with the attached.

Customer: replied 8 months ago.
when i replace it with your file I am losing the footer, and most of the css, etc. (see attached screenshot)
Customer: replied 8 months ago.
it should look like this
Customer: replied 8 months ago.
I wont be able to respond until tomorrow. My day is ending soon. Thanks for your help so far on issue #1
Expert:  George Sibiya replied 8 months ago.

Ok no prob, please restore it with your original one I'll continue the test on my site.

Expert:  George Sibiya replied 8 months ago.

I'm out of ideas, I'll leave it to other experts.

Customer: replied 8 months ago.
ok. thanks
Expert:  Steve replied 8 months ago.

Hi there, my name is***** visit the page you listed, it looks like you got the problem resolved. If you still need help with something, please let me know and I can help you understand or implement something custom in Woo Commerce.

Customer: replied 8 months ago.
actually its not even close to being resolved, but it seems too complicated for this site, But thanks.
Expert:  Steve replied 8 months ago.

Ok. I know WordPress and PHP better than most people you'll find anywhere else, but that's up to you.

Customer: replied 8 months ago.
If you want to read through what has transpired and have questions and think you can fix it. that is great. but the fact that you stated that it looked like it was fixed tells me you did nothing to even read the pas messages because I took the entire code out of the page that I was even asking for. Sorry for being negative but this is my first time using this and it's has not been helpful at all. I know I may not be explaining it the best either. So if you want to give it a shot read through it and ask any questions that you might have to get a good grasp of what I am trying to do.
Expert:  Steve replied 8 months ago.

The show_finishes() function is actually part of the woo_remove_product_tabs function because you forgot to close the curly brace. Insert a } after "return $tabs;" and remove the last curly brace from the file to fix the error, like this:

return $tabs;

}

function show_finishes() {

}

function show_specs() {

...

}

function show_certifications() {

...

}
I did read the entire post. You provided the following link and said it wasn't working and it was giving you an error message.

http://cmiproduct.brdonline.com/product/12-inch-single-handle-faucet-in-chrome/

I visited the link, and there were no formatting issues and no error messages. On the surface, it appeared to be functioning properly. That is why I asked if you had resolved the problem.

On your Problem #2, the first thing you need to do is to decide what are the special cases and what you want to have happen. For example, you mentioned there might be a URl but yoiu didn't say what the end result should be if there is a URL. If there's a PDF file, you want to replace the tab contents with the PDF file?: If there is an image, do you want to replace the entire tab contents with the image? You need to clearly define each exception case and what you want the end result to be.

For something like a PDF file, you really have two choices. You can open an iFrame and display the PDF inside the iframe or you can use a plugin such as PDF Embedder to display the PDF. An iframe is probably best if you're trying to open the entire Web page from a URL, but it depends on what you want to have happen. Can't make any assumptions about image files.