Reputation: 21
On the WooCommerce archives page, I want to add a subheading underneath each product's title.
See this image for reference. Red boxes indicate subheading placement.
I tried to follow this guy, Add a custom field value below product title in WooCommerce archives pages , but the Custom Product Text Field is not available to me.
My Wordpress theme, OceanWP, has a subheading field.
I tried to change the the code from the above linked post, and came up with this, but it doesn't work:
add_action( 'woocommerce_after_shop_loop_item_title', 'subheading_display_below_title', 2 );
function subheading_display_below_title(){
global $product;
// Get the custom field value
$subheading = get_post_meta( $product->get_id(), '_subheading', true );
// Display
if( ! empty($subheading) ){
echo '<p class="subheading">'.$subheading.'</p>';
}
}
How can I add my OceanWP product subheading beneath my product title on the product archive page?
Thank you.
Upvotes: 0
Views: 1329
Reputation: 163
To make your code work, you first need to add the subheading custom field for the products. To do this, you can do this:
//Register the product custom field
add_action( 'woocommerce_product_options_general_product_data', 'my_woocommerce_product_subheading' );
function my_woocommerce_product_subheading() {
$args = array(
'label' => 'Subheading', // Text in Label
'placeholder' => 'My Subheading',
'id' => 'product_subheading', // required
'name' => 'product_subheading',
'desc_tip' => 'The product subheading',
);
woocommerce_wp_text_input( $args );
}
//Save the custom field as product custom post meta
add_action( 'woocommerce_process_product_meta', 'my_woocommerce_save_product_subheading' );
function my_woocommerce_save_product_subheading( $post_id ) {
$product = wc_get_product( $post_id );
$title = isset( $_POST['product_subheading'] ) ? $_POST['product_subheading'] : '';
$product->update_meta_data( 'product_subheading', sanitize_text_field( $title ) );
$product->save();
}
//Display the custom field on product page loop below the title
add_action( 'woocommerce_after_shop_loop_item_title', 'subheading_display_below_title', 2 );
function subheading_display_below_title(){
global $product;
// Get the custom field value
$subheading = get_post_meta( $product->get_id(), 'product_subheading', true );
// Display
if( ! empty($subheading) ){
echo '<p class="subheading">'.$subheading.'</p>';
}
}
Upvotes: 0