Viewing 10 replies - 1 through 10 (of 10 total)
  • Plugin Contributor mbrsolution

    (@mbrsolution)

    Hi Marc, can you give me an example of the shortcode you are using? Can you also share your URL?

    Thread Starter mtsone

    (@mtsone)

    I’m using it in a combination with the very simple PhotoPress – Paypal Shopping Cart plugin (1 file). I wanted to fix it myself, but as I don’t know what you changed in the code, I’m quite stuck.

    Sample page of my customer:
    https://www.simoneaeschbacher.com/gallery/recent-work-2/150405-6921/
    (As the website is live and the shop must work, I installed version 4.08 of simple paypal shopping cart again. Therefore you won’t see any errors there.

    Code used:

    <?php
    
    /*
    Plugin Name: PhotoPress - Paypal Shopping Cart
    Plugin URI: Permalink: https://www.peteradamsphoto.com/?page_id=3148
    Description: Dynamicaly adds shopping cart functionality to Image Attachments, Posts, or Pages. Utilizes the WordPress Simple Paypal Shopping Cart Plugin.
    Author: Peter Adams
    Version: 1.4
    Author URI: https://www.peteradamsphoto.com
    */
    
    class papt_spsc {
    
    	static $admin_notices = array();
    	static $enabled;
    
    	static function init() {
    
    		papt_spsc::registerTaxonomies();
    
    		add_action('admin_notices', array( 'papt_spsc', 'admin_notices' ) );
    
    		// test for dependant WordPress Simple Shopping Cart Plugin
    
    		if ( ! papt_spsc::checkforWSPSC() ) {
    			self::addAdminNotice(
    				sprintf(
    					__('PhotoPress Simple Paypal Shopping Cart relies on the <a href="%s">WordPress Simple Paypal Shopping Cart</a>, please install this plugin.', 'papt_spsc'), 'https://www.ads-software.com/extend/plugins/wordpress-simple-paypal-shopping-cart/'
    				),
    			'error');
    		}
    	}
    
    	static function checkforWSPSC() {
    
    		// test for dependant WordPress Simple Shopping Cart Plugin
    		self::$enabled = function_exists('shopping_cart_show');
    		return self::$enabled;
    	}
    
    	static function registerDependantActions() {
    
    		if ( papt_spsc::checkforWSPSC() ) {
    
    			add_action( 'wp_head', array('papt_spsc', 'outputFormHandlerJs' ), 99 );
    			add_shortcode( 'papt_spsc', array('papt_spsc', 'singleProductShortcodeHandler' ) );
    			add_action( 'widgets_init', array('papt_spsc', 'widgetsInit' ) );
    		}
    	}
    
    	static function widgetsInit() {
    
    		register_widget( 'papt_displaySingleProductBuyButtonWidget' );
    	}
    
    	/**
    	 * Append a message of a certain type to the admin notices.
    	 *
    	 * @param string $msg
    	 * @param string $type
    	 * @return void
    	 */
    	static function addAdminNotice( $msg, $type = 'updated' ) {
    
    		self::$admin_notices[] = array(
    			'type' => $type == 'error' ? $type : 'updated', // If it's not an error, set it to updated
    			'msg' => $msg
    		);
    	}
    
    	/**
    	 * Displays admin notices
    	 *
    	 * @return void
    	 */
    	static function admin_notices() {
    
    		if ( is_array( self::$admin_notices ) ) {
    
    			foreach ( self::$admin_notices as $notice ) {
    				extract( $notice );
    				?>
    				<div class="<?php echo esc_attr($type); ?>">
    					<p><?php echo $msg; ?></p>
    				</div><!-- /<?php echo esc_html($type); ?> -->
    				<?php
    			}
    		}
    	}
    
    	/**
    	 * Purchase From Handler
    	 *
    	 * This Javascript is a drop in replacment for ReadForm that adds
    	 * support for price per variation using a 'variation:price' notation
    	 *
    	 */
    	static function outputFormHandlerJs() {
    
    		echo '
    		<script type="text/javascript">
    			<!--
    			//
    			var ReadForm = function( obj1, tst ) {
    
    			    // Read the user form
    		    var i,j,pos;
    		    val_total="";val_combo="";		
    
    		    for (i=0; i<obj1.length; i++)
    		    {
    		        // run entire form
    		        obj = obj1.elements[i];           // a form element
    
    		        if (obj.type == "select-one")
    		        {   // just selects
    		            if (obj.name == "quantity" ||
    		                obj.name == "amount") continue;
    			        pos = obj.selectedIndex;        // which option selected
    			        val = obj.options[pos].value;   // selected value
    
    			        var val_name = "", val_price = 0;
    			        val_pieces = val.split(":");
    			        if (val_pieces.length > 1) {
    			        	val_name  = val_pieces[0];
    			        	val_price = val_pieces[1].substr(1);
    			        	obj1.elements["price"].value = val_price;
    			        } else {
    			        	val_name = val;
    			        }
    
    			        //val_combo = val_combo + "(" + val + ")";
    			        val_combo = val_combo + " (" + val_name + ")";
    
    		        }
    		    }
    			// Now summarize everything we have processed above
    			val_total = obj1.product_tmp.value + val_combo;
    			obj1.product.value = val_total;
    			}
    			//-->
    		</script>';
    
    	}
    
    	/**
    	 * DEPRICATED
    	 *
    	 */
    	static function showSingleProductBuyButton($product_name = '', $base_price = 0, $shipping = 0, $variations = array() ) {
    
    		if ( ! $product_name ) {
    
    			$product_name = get_the_title($post->ID);
    		}
    
    		if ( $variations ) {
    
    		 	$variations_string = papt_spsc::createVariationsString( $variations );
    
    		 	$product_string = sprintf( "[wp_cart:%s:price:%s:shipping:%s%s:end]", $product_name, $base_price, $shipping, $variations_string );
    		 	//echo print_wp_cart_button_new('[wp_cart:Demo Product 1:price:15:shipping:2:var1[Size|Small:200|Medium:300|Large:400]:var2[Color|Red|Green]:end]');
    		 } else {
    
    			$product_string = sprintf( "[wp_cart:%s:price:%s:shipping:%s:end]", $product_name, $base_price, $shipping );
    
    		 }
    
    	 	echo print_wp_cart_button_new($product_string);
    	}
    
    	/**
    	 * Generates The purchase options form
    	 *
    	 * @param $product_name	string	the name of the product to be purchased
    	 * @param $variations	array	an array of product variations
    	 */
    	static function generateForm ($product_name, $variations = array(), $shipping = 0, $echo = false ) {
    
    		$addToCartLabel = get_option('addToCartButtonName');   
    
    	    if (!$addToCartLabel || ($addToCartLabel == '') ) {
    	    	$addToCartLabel = __("Add to Cart", "WSPSC");
    		}
    
    		$form = '';
    
    		$form .= '<div class="wp_cart_button_wrapper">';
    		$form .= '<form method="post" class="wp-cart-button-form" action="" style="display:inline" onsubmit="return ReadForm(this, true);">';
    
    		$form .= '<select name="variation1" onchange="ReadForm (this.form, false);">';
    
    		foreach ( $variations as $category => $variation ) {
    
    			$options = '';
    
    			foreach ($variation as $v) {
    
    				$options .= sprintf('<option value="%s" price="%s" shipping="%s">%s</option>', $v['name']. ': '.$v['price'], $v['price'], $v['shipping'], $v['name']. ': '.$v['price']);
    			} 
    
    			$form .= sprintf('<optgroup label="%s">%s</optgroup>', $category, $options);
    		}
    
    		$form .= '</select>';
    		$form .= '';
    		$form .= sprintf('<input type="submit" value="%s" />', $addToCartLabel);
    		$form .= sprintf('<input type="hidden" name="product" value="%s" />', $product_name);
    		$form .= '<input type="hidden" name="price" value="0" />';
    		$form .= sprintf('<input type="hidden" name="product_tmp" value="%s" />', $product_name);
    		$form .= sprintf('<input type="hidden" name="shipping" value="%s" />', $shipping );
    		$form .= sprintf('<input type="hidden" name="cartLink" value="%s" />', cart_current_page_url() );
    		$form .= '<input type="hidden" name="addcart" value="1" />';
    		$form .= '</form>';
    		$form .= '</div>';
    
    		if ( $echo ) {
    			echo $form;
    		} else {
    			return $form;
    		}
    	}
    
    	/**
    	 * DEPRECATED
    	 *
    	 */
    	static function createVariationsString( $variation_sets ) {
    
    		$vstr = '';
    
    		foreach ( $variation_sets as $set_number => $set ) {
    
    			if ( ! isset( $set['label'] ) ) {
    
    				$set['label'] = 'Select a variation';
    			}
    
    			if ( isset( $set['options'] ) ) {
    
    				$options_str = '';
    
    				foreach ( $set['options'] as $option => $price ) {
    
    					$options_str .= sprintf( '|%s:%s', $option, $price );
    				}
    
    			} else {
    
    				continue;
    			}
    
    			$vstr .= sprintf(':var%s[%s%s]', $set_number+1, $set['label'], $options_str );
    		}
    
    		return $vstr;
    	}
    
    	/**
    	 * Construct Purchase Options for a Single Product
    	 *
    	 * @param $atts	array	an array of param passed in by the widget instance.
    	 * @return mixed
    	 */
    	static function singleProductShortcodeHandler( $atts ) {
    
    		global $post;
    
    		extract( shortcode_atts( array(
    	      'product_name' 	=> '',
    	      'base_price' 		=> 0,
    	      'shipping'		=> 0,
    	      'variations'		=> array(),
    	      'variations_label'	=>	'Variations',
    	      'taxonomy'		=>	'photos_purchase_variations'
    	    ), $atts ) );
    
    	    $vars = array();
    
    	    // get variations from a taxonomy
    	    if ( $taxonomy ) {
    
    			// check for purchase options associated with image
    			$terms = get_the_terms( $post->ID, $taxonomy );
    
    			if ( ! $terms ) {
    
    				$options = get_option('photopress_spsc_option_name');
    
    				// Fetch global variations unless told not to.
    				if ( ! isset( $options['explicit_mode'] ) ) {
    					// get all purchase options
    
    					$terms = get_terms( $taxonomy, array(
    
    						'hierarchical'  => true,
    						'hide_empty'	=> false // even terms not yet assigned
    
    					));
    
    				}
    			}
    
    		    if ( $terms ) {
    
    			    // cache of parent terms
    			    $parent_groups = array();
    
    				$tax_variations = '';			    
    
    			    // loop through terms and organize by parent
    			    foreach ( $terms as $term ) {
    
    			    	// ttest to se if the term is a valid variation
    			    	if ( strpos($term->name, ':') ) {
    
    						$args = array();
    
    				    	if ( $term->parent != 0 && ! isset( $parent_groups[ $term->parent ] ) ) {
    
    					    	$parent_groups[ $term->parent ] = get_term( $term->parent, $taxonomy );
    				    	}
    
    					    // if there is a parent add a 'group' attr to the option array
    					    // if 0 is specified on the object then there is no parent
    					    if ( $term->parent != 0 ) {
    						    $parent_obj = $parent_groups[ $term->parent ];
    							$args['group'] = $parent_obj->name;
    
    						// check for valid purchase options that have no parent
    					    } elseif ( $term->parent === 0 && strpos($term->name, ':') ) {
    					    $args['group'] = '';
    
    					    }
    
    					    // if the purchase option is valid then explode it for parts
    						$parts = explode( ":", $term->name );
    
    						// set variation name
    						if ( isset( $parts[0] ) ) {
    				    		$args['name'] = trim( $parts[0] );
    				    	} else {
    				    		$args['price'] = "";
    				    	}
    
    						// set price
    				    	if ( isset( $parts[1] ) ) {
    				    		$args['price'] = trim( $parts[1] );
    				    	} else {
    				    		$args['price'] = "";
    				    	}
    
    				    	//set shipping
    				    	if ( isset( $parts[1] ) ) {
    				    		$args['shipping'] = trim( $parts[2] );
    				    	} else {
    				    		$args['shipping'] = "";
    				    	}	
    
    						$tax_variations[ $args['group'] ][ $term->term_id ] = $args;
    
    				    }
    				}
    
    				$variations = $tax_variations;
    
    				return papt_spsc::generateForm( $product_name, $variations, $shipping);
    
    			} else {
    		    // backwards compatability for old widget option
    		    // look for global variations passed in from from widget
    
    			    if ( $variations ) {
    					//split on | for variation
    			        $variations = explode( "|", $variations);
    
    					// parse variations for prices
    				    if ( $variations ) {
    
    					    $va = array();
    
    				        // split on : for price
    				    	foreach ( $variations as $variation ) {
    
    					    	$variation = explode( ":", $variation );
    
    					    	if ( isset( $variation[1] ) ) {
    					    		$vars[ trim( $variation[0] ) ] = trim( $variation[1] );
    					    	} else {
    					    		// use base price if no variation price exists
    						    	$vars[ trim( $variation[0] ) ] = "";
    					    	}
    				    	}
    
    				    }
    
    				    $va[] = array('label' => $variations_label, 'options' => $vars);
    
    				    return papt_spsc::showSingleProductBuyButton( $product_name, $base_price, $shipping, $va );
    			    }
    			}
    		}
    	}
    
    	/**
    	 * Register Purchase Options Custom Taxonomy
    	 *
    	 */
    	static function registerTaxonomies() {
    
    		$labels = array(
    		'name'                       => _x( 'Photo Purchase Variations', 'taxonomy general name' ),
    		'singular_name'              => _x( 'Photo Purchase Variation', 'taxonomy singular name' ),
    		'search_items'               => __( 'Search Photo Purchase Variations' ),
    		'popular_items'              => __( 'Popular Purchase Variations' ),
    		'all_items'                  => __( 'All Photo Purchase Variations' ),
    		'parent_item'                => null,
    		'parent_item_colon'          => null,
    		'edit_item'                  => __( 'Edit Purchase Variation' ),
    		'update_item'                => __( 'Update Purchase Variation' ),
    		'add_new_item'               => __( 'Add New Purchase Variation' ),
    		'new_item_name'              => __( 'New Purchase Variation Name' ),
    		'separate_items_with_commas' => __( 'Separate Purchase Variation with commas' ),
    		'add_or_remove_items'        => __( 'Add or remove Purchase Variations' ),
    		'choose_from_most_used'      => __( 'Choose from the most used Purchase Variations' ),
    		'not_found'                  => __( 'No Photo Purchase Variations found.' ),
    		'menu_name'                  => __( 'Photo Purchase Variations' ),
    	);
    
    		register_taxonomy( 'photos_purchase_variations', 'attachment', array(
    							'hierarchical'	 			=> true,
    							'labels' 					=> $labels,
    							'query_var' 				=> 'photos_purchase_variations',
    							'rewrite' 					=> false,
    							'update_count_callback'		=> '_update_generic_term_count',
    							'show_admin_column' 		=> true,
    							'public'					=> true,
    							'sort'						=> true )
    		);
    	}
    
    }
    
    class papt_displaySingleProductBuyButtonWidget extends WP_Widget {
    
    	/* Set up some default widget settings. */
    	static $defaults = array( 
    
    		'title' 			=> 'Purchase a Print',
    		'description' 		=> 'Purchase a print of this image using the buy button below',
    		'base_price' 		=> 0,
    		'shipping' 			=> 0,
    		'variations_label' 	=> 'Print Sizes/Types',
    		'variations'		=> '',
    		'taxonomy'			=> ''
    	);
    
    	function papt_displaySingleProductBuyButtonWidget() {
    
    		/* Widget settings. */
    		$widget_ops = array( 'classname' => 'papt_displaySingleProductBuyButtonWidget', 'description' => "Display's the Simple Paypal shopping cart buy button for a single image. Can only be used on single image (attachment) pages." );
    
    		/* Widget control settings. */
    		//$control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'papt-displayTax-widget' );
    		$control_ops = array('width' => 400);
    		parent::WP_Widget( false, 'PhotoPress - Purchase Image Button', $widget_ops, $control_ops);
    	}
    
    	function widget( $args, $instance ) {
    
    		global $post;
    
    		extract( $args );
    
    		$product_name = get_the_title( $post->ID );
    		//print_r($product_name);
    
    		$form = papt_spsc::singleProductShortcodeHandler(
    			array(
    				'base_price'		=> 	$instance['base_price'],
    				'shipping'			=> 	$instance['shipping'],
    				'variations_label'	=>	$instance['variations_label'],
    				'variations'		=>	$instance['variations'],
    				'product_name'		=>	$product_name,
    				'post_id'			=>	$post->ID
    			)
    		);
    
    		if ( $form ) {
    
    			/* User-selected settings. */
    			$title = apply_filters('widget_title', $instance['title'] );
    
    			/* Before widget (defined by themes). */
    			echo $before_widget;
    
    			echo "<h2>$title</h2>";
    			echo "<p>".$instance['description']."</p>";		
    
    			$product_name = get_the_title($post->ID);
    
    			echo $form;
    
    			/* After widget (defined by themes). */
    			echo $after_widget;
    
    		}
    
    	}
    
    	function update( $new_instance, $old_instance ) {
    		$instance = $old_instance;
    
    		$form_fields = array_keys( self::$defaults );
    
    		/* Strip tags (if needed) and update the widget settings. */
    		foreach ( $form_fields as $field ) {
    
    			if ($field === 'description') {
    				$instance[ $field ] = $new_instance[ $field ];
    
    			} else {
    
    				$instance[ $field ] = strip_tags( $new_instance[ $field ] );
    			}
    		}
    
    		return $instance;
    	}
    
    	function form( $instance ) {
    
    		$instance = wp_parse_args( (array) $instance, self::$defaults ); 
    
    		?>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'title' ); ?>">Title:</label>
    			<input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" type="text" class="widefat" />
    		</p>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'description' ); ?>">Description (optional):</label>
    			<textarea id="<?php echo $this->get_field_id( 'description' ); ?>" name="<?php echo $this->get_field_name( 'description' ); ?>" style="width:100%;" rows="4" ><?php echo $instance['description']; ?></textarea>
    		</p>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'base_price' ); ?>">Base Price:</label>
    			<input id="<?php echo $this->get_field_id( 'base_price' ); ?>" name="<?php echo $this->get_field_name( 'base_price' ); ?>" value="<?php echo $instance['base_price']; ?>" type="text" class="widefat" />
    		</p>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'shipping' ); ?>">Shipping:</label>
    			<input id="<?php echo $this->get_field_id( 'shipping' ); ?>" name="<?php echo $this->get_field_name( 'shipping' ); ?>" value="<?php echo $instance['shipping']; ?>" type="text" class="widefat" />
    		</p>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'variations_label' ); ?>">Variations Label (Optional):</label>
    			<input id="<?php echo $this->get_field_id( 'variations_label' ); ?>" name="<?php echo $this->get_field_name( 'variations_label' ); ?>" value="<?php echo $instance['variations_label']; ?>" type="text" class="widefat" />
    		</p>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'variations' ); ?>">Variations (DEPRECATED):</label>
    			<input id="<?php echo $this->get_field_id( 'variations' ); ?>" name="<?php echo $this->get_field_name( 'variations' ); ?>" value="<?php echo $instance['variations']; ?>" type="text" class="widefat" />
    		</p>
    
    		<p>
    			<label for="<?php echo $this->get_field_id( 'taxonomy' ); ?>">Variations Taxonomy (DEPRECATED):</label>
    			<input id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>" value="<?php echo $instance['taxonomy']; ?>" style="width:;" type="text" class="widefat" />
    		</p>
    
    		<?php
    
    	}
    }
    
    class photopress_spsc_admin_page {
    
    	private $options;
    
    	public function __construct() {
    
    		add_action( 'admin_menu', array( $this, 'add_plugin_page' ) );
            add_action( 'admin_init', array( $this, 'page_init' ) );
    
    	}
    
    	/**
         * Add options page
         */
        public function add_plugin_page()
        {
            // This page will be under "Settings"
            add_options_page(
                'PhotoPress',
                'PP Purchase Variations',
                'manage_options',
                'photopress-spsc-admin-page',
                array( $this, 'create_admin_page' )
            );
        }
    
        /**
         * Options page callback
         */
        public function create_admin_page() {
            // Set class property
            $this->options = get_option( 'photopress_spsc_option_name' );
            ?>
            <div class="wrap">
                <?php screen_icon(); ?>
                <h2>PhotoPress Purchase Variation Settings</h2>
                <form method="post" action="options.php">
                <?php
                    // This prints out all hidden setting fields
                    settings_fields( 'photopress_spsc_option_group' );
                    do_settings_sections( 'photopress-spsc-admin-page' );
                    submit_button();
                ?>
                </form>
            </div>
            <?php
        }
    
    	/**
         * Register and add settings
         */
        public function page_init() {  
    
            register_setting(
                'photopress_spsc_option_group', // Option group
                'photopress_spsc_option_name', // Option name
                array( $this, 'sanitize' ) // Sanitize
            );
    
            add_settings_section(
                'setting_section_id', // ID
                'Purchase Variation Settings', // Title
                array( $this, 'print_section_info' ), // Callback
                'photopress-spsc-admin-page' // Page
            );  
    
            add_settings_field(
                'explicit_mode', // ID
                'Explicit Mode', // Title
                array( $this, 'explicit_mode_callback' ), // Callback
                'photopress-spsc-admin-page', // Page
                'setting_section_id' // Section
            );
        }
    
        /**
         * Sanitize each setting field as needed
         *
         * @param array $input Contains all settings fields as array keys
         */
        public function sanitize( $input )
        {
            $new_input = array();
            if( isset( $input['explicit_mode'] ) ) {
    
                $new_input['explicit_mode'] = absint( $input['explicit_mode'] );
    		}
    
            return $new_input;
        }
    
        /**
         * Print the Section text
         */
        public function print_section_info() {
    
            print '';
        }
    
        /**
         * Get the settings option array and print one of its values
         */
        public function explicit_mode_callback() {
    
        	if ( isset( $this->options['explicit_mode']) && 1 == $this->options['explicit_mode'] ) {
    
    	    	$checked = 'checked';
        	}
    
            printf(
                '<input type="checkbox" id="explicit_mode" name="photopress_spsc_option_name[explicit_mode]" value="1" %s /> Only shows variations explicitly set on each image.',
                $checked
            );
        }
    
    }
    
    if( is_admin() ) {
        $my_settings_page = new photopress_spsc_admin_page();
    }
    
    add_action( 'init', array('papt_spsc', 'init' ), 98 );
    add_action( 'plugins_loaded', array('papt_spsc', 'registerDependantActions' ) );
    register_sidebar(array(
      'name' => 'PhotoPress Image Page Sidebar',
      'id' => 'papt-image-sidebar',
      'description' => 'Widgets in this area will be shown on image (attachment) page templates.'
    ));
    ?>

    Thread Starter mtsone

    (@mtsone)

    I’m using it in a combination with the very simple PhotoPress – Paypal Shopping Cart plugin (1 file). I wanted to fix it myself, but as I don’t know what you’ve changed in the code, I’m quite stuck.

    Sample page of my customer:
    https://www.simoneaeschbacher.com/gallery/recent-work-2/150405-6921/
    (As the website is live and the shop must work, I installed version 4.08 of simple paypal shopping cart again. Therefore you won’t see any errors there.

    Thread Starter mtsone

    (@mtsone)

    the code is using $product_name = get_the_title( $post->ID );
    I think that’s where it looses the title.

    I am getting this too, my code is as follows:

    <div class="wp_cart_button_wrapper"><form method="post" class="wp-cart-button-form" action="" style="display:inline" onsubmit="return ReadForm(this, true);"><input type="submit" value="Add to Cart" /><input type="hidden" name="product" value="D2DLP Alice Badge" /><input type="hidden" name="price" value="3" /><input type="hidden" name="shipping" value="0.001" /><input type="hidden" name="addcart" value="1" /><input type="hidden" name="cartLink" value="https://www.dtodstore.com/?preview=true&preview_id=2&preview_nonce=b25cd1099e" /><input type="hidden" name="product_tmp" value="D2DLP Alice Badge" /><input type="hidden" name="item_number" value="" /></form>

    Page: https://www.dtodstore.com/

    Price goes through to the cart but no name, and so people can’t check out.

    Any help would be much appreciated, thanks.

    Plugin Contributor mbrsolution

    (@mbrsolution)

    @mtsone and @phantommenace please check the following URL it shows you the difference in the changes between 4.0.8 and 4.0.9.

    Plugin Author mra13

    (@mra13)

    What exact shortcode did you use to show the shopping cart on that page? Are you using the following shortcode?

    [show_wp_shopping_cart]

    Thanks @mbrsolution – works perfectly now ??

    I’m having a display problem with the code. neither the image or the full text in title and description are showing.

    Can you please take a look at this and tell me what is the cause?
    https://traditionalqajaqingfest.org/register/

    Plugin Contributor mbrsolution

    (@mbrsolution)

    @pterophyta can you start a new support thread. This one is already marked as resolved.

    Kind regards

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘Name of prodcuts disappeared since 4.0.9’ is closed to new replies.