Created
October 31, 2021 15:27
-
-
Save ibrahim-kardi/87e1bf284cd5c868e7cd2bde25c050ab to your computer and use it in GitHub Desktop.
custom meta field in woocommerce product page
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## ---- 1. Backend ---- ## | |
// Adding a custom Meta container to admin products pages | |
add_action('add_meta_boxes', 'create_custom_meta_box'); | |
if (!function_exists('create_custom_meta_box')) { | |
function create_custom_meta_box() | |
{ | |
add_meta_box( | |
'custom_product_meta_box', | |
__(' Product Main URL <em>(orginal)</em>', 'cmb'), | |
'add_custom_content_meta_box', | |
'product', | |
'normal', | |
'default' | |
); | |
} | |
} | |
// Custom metabox content in admin product pages | |
if (!function_exists('add_custom_content_meta_box')) { | |
function add_custom_content_meta_box($post) | |
{ | |
$prefix = '_bhww_'; // global $prefix; | |
$ingredients = get_post_meta($post->ID, $prefix . 'ingredients_wysiwyg', true) ? get_post_meta($post->ID, $prefix . 'ingredients_wysiwyg', true) : ''; | |
$args['textarea_rows'] = 6; | |
echo '<a class="extra-meta-woo" href="' . $ingredients . '" target="_blank">This is a link</a>'; | |
wp_editor($ingredients, 'ingredients_wysiwyg', $args); | |
echo '<input type="hidden" name="custom_product_field_nonce" value="' . wp_create_nonce() . '">'; | |
} | |
} | |
//Save the data of the Meta field | |
add_action('save_post', 'save_custom_content_meta_box', 10, 1); | |
if (!function_exists('save_custom_content_meta_box')) { | |
function save_custom_content_meta_box($post_id) | |
{ | |
$prefix = '_bhww_'; // global $prefix; | |
// We need to verify this with the proper authorization (security stuff). | |
// Check if our nonce is set. | |
if (!isset($_POST['custom_product_field_nonce'])) { | |
return $post_id; | |
} | |
$nonce = $_REQUEST['custom_product_field_nonce']; | |
//Verify that the nonce is valid. | |
if (!wp_verify_nonce($nonce)) { | |
return $post_id; | |
} | |
// If this is an autosave, our form has not been submitted, so we don't want to do anything. | |
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { | |
return $post_id; | |
} | |
// Check the user's permissions. | |
if ('product' == $_POST['post_type']) { | |
if (!current_user_can('edit_product', $post_id)) | |
return $post_id; | |
} else { | |
if (!current_user_can('edit_post', $post_id)) | |
return $post_id; | |
} | |
// Sanitize user input and update the meta field in the database. | |
update_post_meta($post_id, $prefix . 'ingredients_wysiwyg', wp_kses_post($_POST['ingredients_wysiwyg'])); | |
} | |
} | |
// ## ---- 2. Front-end ---- ## | |
// // Create custom tabs in product single pages | |
// add_filter('woocommerce_product_tabs', 'custom_product_tabs'); | |
// function custom_product_tabs($tabs) | |
// { | |
// global $post; | |
// $product_ingredients = get_post_meta($post->ID, '_bhww_ingredients_wysiwyg', true); | |
// $product_benefits = get_post_meta($post->ID, '_bhww_benefits_wysiwyg', true); | |
// if (!empty($product_ingredients)) | |
// $tabs['ingredients_tab'] = array( | |
// 'title' => __('Ingredients', 'woocommerce'), | |
// 'priority' => 45, | |
// 'callback' => 'ingredients_product_tab_content' | |
// ); | |
// if (!empty($product_benefits)) | |
// $tabs['benefits_tab'] = array( | |
// 'title' => __('Benefits', 'woocommerce'), | |
// 'priority' => 50, | |
// 'callback' => 'benefits_product_tab_content' | |
// ); | |
// return $tabs; | |
// } | |
// // Add content to custom tab in product single pages (1) | |
// function ingredients_product_tab_content() | |
// { | |
// global $post; | |
// $product_ingredients = get_post_meta($post->ID, '_bhww_ingredients_wysiwyg', true); | |
// if (!empty($product_ingredients)) { | |
// echo '<h2>' . __('Product Ingredients', 'woocommerce') . '</h2>'; | |
// // Updated to apply the_content filter to WYSIWYG content | |
// echo apply_filters('the_content', $product_ingredients); | |
// } | |
// } | |
// // Add content to custom tab in product single pages (2) | |
// function benefits_product_tab_content() | |
// { | |
// global $post; | |
// $product_benefits = get_post_meta($post->ID, '_bhww_benefits_wysiwyg', true); | |
// if (!empty($product_benefits)) { | |
// echo '<h2>' . __('Product Benefits', 'woocommerce') . '</h2>'; | |
// // Updated to apply the_content filter to WYSIWYG content | |
// echo apply_filters('the_content', $product_benefits); | |
// } | |
// } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment