How to Change “Proceed to Checkout” , “Add to cart” & “View Cart” button text for WooCommerce?

Add below functions to your function.php file in WordPress child theme
/*Proceed to Checkout*/

remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 ); 
add_action('woocommerce_proceed_to_checkout', 'sm_woo_custom_checkout_button_text',20);

function sm_woo_custom_checkout_button_text() {
    $checkout_url = WC()->cart->get_checkout_url();
  ?>
       <a href="<?php echo $checkout_url; ?>" class="checkout-button button alt wc-forward"><?php  _e( 'Check On Out', 'woocommerce' ); ?></a> 
  <?php
} 


/*Add to cart*/
add_filter( 'woocommerce_product_single_add_to_cart_text', 'sm_woo_custom_cart_button_text' );
add_filter( 'woocommerce_product_add_to_cart_text', 'sm_woo_custom_cart_button_text' );   
 
function sm_woo_custom_cart_button_text() {
        return __( 'Add to basket', 'woocommerce' );
}

/*View Cart*/
function sm_text_view_cart_strings( $translated_text, $text, $domain ) {
    switch ( $translated_text ) {
        case 'View Cart' :
            $translated_text = __( 'Check On Out', 'woocommerce' );
            break;
    }
    return $translated_text;
}
add_filter( 'gettext', 'sm_text_view_cart_strings', 20, 3 );

How to add a sidebar to the bottom of the shop page in WooCommerce?

Step-1 :
  • Create Child Theme Like : twentyseventeen-child
  • Then create woocommerce in child theme
  • Then Goto wp-content\plugins\woocommerce\templates
  • Copy archive-product.php file
  • Past in your Child Theme “woocommerce” folder

archive-product.php code here

<?php
/**
 * The Template for displaying product archives, including the main shop page which is a post type archive
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/archive-product.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see 	    https://docs.woocommerce.com/document/template-structure/
 * @author 		WooThemes
 * @package 	WooCommerce/Templates
 * @version     2.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

get_header( 'shop' ); ?>

	<?php
		/**
		 * woocommerce_before_main_content hook.
		 *
		 * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
		 * @hooked woocommerce_breadcrumb - 20
		 */
		do_action( 'woocommerce_before_main_content' );
	?>

		<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>

			<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

		<?php endif; ?>

		<?php
			/**
			 * woocommerce_archive_description hook.
			 *
			 * @hooked woocommerce_taxonomy_archive_description - 10
			 * @hooked woocommerce_product_archive_description - 10
			 */
			do_action( 'woocommerce_archive_description' );
		?>

		<?php if ( have_posts() ) : ?>

			<?php
				/**
				 * woocommerce_before_shop_loop hook.
				 *
				 * @hooked woocommerce_result_count - 20
				 * @hooked woocommerce_catalog_ordering - 30
				 */
				do_action( 'woocommerce_before_shop_loop' );
			?>

			<?php woocommerce_product_loop_start(); ?>

				<?php woocommerce_product_subcategories(); ?>

				<?php while ( have_posts() ) : the_post(); ?>

					<?php wc_get_template_part( 'content', 'product' ); ?>

				<?php endwhile; // end of the loop. ?>

			<?php woocommerce_product_loop_end(); ?>

			<?php
				/**
				 * woocommerce_after_shop_loop hook.
				 *
				 * @hooked woocommerce_pagination - 10
				 */
				do_action( 'woocommerce_after_shop_loop' );
			?>

		<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>

			<?php wc_get_template( 'loop/no-products-found.php' ); ?>

		<?php endif; ?>

	<?php
		/**
		 * woocommerce_after_main_content hook.
		 *
		 * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
		 */
		do_action( 'woocommerce_after_main_content' );
	?>
    
	<?php
     echo '<p style="text-align:center;">You can add your sidebar code or short code here</p>';
    ?>
	<?php
		/**
		 * woocommerce_sidebar hook.
		 *
		 * @hooked woocommerce_get_sidebar - 10
		 */
		do_action( 'woocommerce_sidebar' );
	?>

<?php get_footer( 'shop' ); ?>

How to add Meta Description in pages with Divi Builder and Yoast Seo Plugin without use %%excerpt%% variable?

Just copy below Function and Add a Function in your Divi child theme function.php file.

<?php

add_filter( 'wpseo_metadesc', 'sm_divi_builder_content_wpseo_metadesc', 10, 1 );
function sm_divi_builder_content_wpseo_metadesc( $desc ) {
 // Get $post if you're inside a function
 global $post;
 $post_type = get_post_type( $post );
 if ($post_type == "page") {
  //get_meta_description
  $desc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true); 
  if($desc=="")
  {
   if ( has_excerpt( $post->ID ) ) {
    // This post has excerpt
    $desc = $post->post_excerpt;
   } else {
    // This post has no excerpt
    $desc = trim(strip_tags(preg_replace('/\[\/?et_pb.*?\]/', '', $post->post_content)));
    $desc = substr($desc,0,155); 
   }
  }
 }
 return $desc;
}

?>

How to Add Custom Post Order in Custom Post Type?

Add the below code in function.php file

My Post Type Slug: products

/* Add Custom order in Custom Post Type */
function sm_custom_post_sort( $post ){
  add_meta_box( 
    'custom_post_sort_box', 
    'Position in List of Products', 
    'sm_custom_post_order', 
    'products' ,
    'side'
    );
}
add_action( 'add_meta_boxes', 'sm_custom_post_sort' );

function sm_custom_post_order( $post ) {
  wp_nonce_field( basename( __FILE__ ), 'sm_custom_post_order_nonce' );
  $current_pos = get_post_meta( $post->ID, '_custom_post_order', true); ?>
  

Enter the position at which you would like the products to appear. For exampe, products "1" will appear first, products "2" second, and so forth.

<input type="number" name="pos" value="<?php echo $current_pos; ?>" />

<?php } /* Save the input to post_meta_data */ function sm_save_custom_post_order( $post_id ){ if ( !isset( $_POST['sm_custom_post_order_nonce'] ) || !wp_verify_nonce( $_POST['sm_custom_post_order_nonce'], basename( __FILE__ ) ) ){ return; } if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ){ return; } if ( ! current_user_can( 'edit_post', $post_id ) ){ return; } if ( isset( $_REQUEST['pos'] ) ) { update_post_meta( $post_id, '_custom_post_order', sanitize_text_field( $_POST['pos'] ) ); } } add_action( 'save_post', 'sm_save_custom_post_order' ); /* Add custom post order column to post list */ function sm_add_custom_products_post_order_column( $columns ){ return array_merge ( $columns, array( 'pos' => 'Position', )); } add_filter('manage_products_posts_columns' , 'sm_add_custom_products_post_order_column'); /* Display custom post order in the post list */ function sm_custom_products_post_order_value( $column, $post_id ){ if ($column == 'pos' ){ echo '

' . get_post_meta( $post_id, '_custom_post_order', true) . '

'; } } add_action( 'manage_products_posts_custom_column' , 'sm_custom_products_post_order_value' , 10 , 2 ); /* Sort posts on the blog posts page according to the custom sort order */ function sm_custom_post_order_sort( $query ){ if ( $query->is_main_query() && is_home() ){ $query->set( 'orderby', 'meta_value' ); $query->set( 'meta_key', '_custom_post_order' ); $query->set( 'order' , 'ASC' ); } } add_action( 'pre_get_posts' , 'sm_custom_post_order_sort' );

How to Fetch “custom_post_order” in Front Side?

<!-- Products Section Start Here -->                       
<?php
$products_type = 'products';
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$products_args=array(
	'type'                     => $products_type,
	'post_status' 			   => 'publish',
	'posts_per_page' 		   => 4,
	'paged' 				   => $paged, 
	'caller_get_posts'         => -1,
	'child_of'                 => 0,
	'parent'                   => 0,
	'meta_key' 				   => '_custom_post_order',
	'orderby' 				   => 'meta_value',
	'order' 				   => 'ASC',
	'hide_empty'               => 0,
	'hierarchical'             => 1,
	'exclude'                  => '',
	'include'                  => '',
	'number'                   => '',
	'tax_query' 			   => array(
										array(
											'taxonomy' => 'product-category',
											'field' => 'id',
											'terms' => $product_category_term_id
										)
									),
	'pad_counts'               => false 
);
$products_my_query = null;
$products_my_query = new WP_Query($products_args);

if( $products_my_query->have_posts() ) 
{
	while ($products_my_query->have_posts()) : $products_my_query->the_post(); 
	$product_description = get_the_excerpt($post->ID);
	?>
	<div class="product_box">
	<div class="news_and_eve">
	<?php the_title( '<h1>', '</h1>' );?>
	</div>
	<div class="product_content">
	<?php
	if ( has_post_thumbnail() ) {
		   ?>
			 <div class="image_cont"><?php echo  get_the_post_thumbnail($post->ID,"thumbnail"); //thumbnail,medium,large,full,array(100,100)?></div>
		   <?php
		}
	?>
	<?php echo $product_description; ?>
	</div>
	<!-- Read more Here -->
	<div class="read_more_btn">
   <a href="<?php echo get_permalink(); ?>">Read More...</a>
	</div>
	</div>
	<?php
	   endwhile;
}
wp_reset_query($products_my_query);
?>
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $products_my_query ) ); }else{ echo "No Products Found.";}?>
<!-- Products Section Start Here -->