Plugin Reviews

Shatner - Name your Own Price Integration for WooCommerce

Shatner lets users name their own price

18 reviews
Average Rating
3.9 out of 5 stars
Great plugin but needs one simple change
By ,

This is a simple but effective plugin. Functionally it does exactly what i need. One strange User Experience concern that is a big one as it will lead to a decrease in sales:

It allows you to set a minimum amount that you are willing to accept but on the product page it displays that amount as the 'suggested price' instead of the 'minimum price' I don't want to suggest to my customers to pay the minimum amount. I want them to pay what they want.

It would be great if this could be changed or better yet if we had the options to change that text ourselves. I know its prob an easy fix via CSS but I wouldn't know how to do that.


PHP Class printed in the html output!
By , for WP 4.3.1

Part of the plugin is printed to the html output!, both front end and control panel.
Uninstalled and deleted.
It's a shame


ok, dsthedev is right, the problem are the PHP short tags.
On my server I have disabled it, so obviously, the plugin is not working.

I followed the recommendation of dsthedev and I edited the files that cause the problem.
They are, as he says, the files:
- name_price_wc_plugin.php (line 1)
- \templates\single-product\price.php (lines 41 and 52)

you have to change this:
to this:

The plugin version of which I speak is the 1.7

And it solved.
The plugin works well and does the job perfectly. It's a shame to have this foolish error. I hope that in the next update the author corrected.

Does it's job
By , for WP 4.2.2

Works as advertised. Only issue I had was that the plugin is using a few shorthand php opening tags <? when it should be using <?php.

To users who see a wall of errors at the top of the page, try this:
Open name_price_wc_plugin.php and change line 1 from <? to <?php
Also open templates/single-product/price.php and change line 52 from <? } ?> to <?php } ?>. If this doesn't help simply change the version to something old (1.0) and update the plugin, it will revert it back to normal.

To the developer: please use full tags, always. Other than that, this plugin is great.

working after quick fix
By ,

When installed got the same mess as espiacongreso.
Found the developer had used the php short open tags in a few places. After checking all of the php files and replacing the plugin works. Though having some difficulty with the plugin settings for the label. However a user is able to set their own price.

By , for WP 4.2.2

That was what I got from installing

('shatner_label', "Name your own price"); wp_enqueue_script('shatner', plugins_url('/shatner.js',__FILE__), array('jquery') ); if ( is_admin() ){ // admin actions $this->init_form_fields(); add_action( 'admin_menu', array($this, 'add_shatner_menu' )); add_action( 'admin_init', array($this, 'admin_init' )); add_action('woocommerce_before_calculate_totals', array($this, 'add_custom_price' )); add_action('woocommerce_product_options_pricing', array($this, 'add_donation_radio')); add_action('save_post', array($this, 'set_named_price')); } else { if(get_option('use_shatner_templates', 1 ) == 1) { add_filter('woocommerce_locate_template', array($this, 'template_override'),10,3); add_filter('woocommerce_loop_add_to_cart_link', array($this, 'remove_link'),10); } add_action('woocommerce_product_options_pricing', array($this, 'add_donation_radio')); add_action('save_post', array($this, 'set_named_price')); add_action('woocommerce_add_to_cart', array($this, 'add_to_cart_hook')); add_action('woocommerce_before_calculate_totals', array($this, 'add_custom_price' )); add_action('init', array($this, 'init_css')); } } public function remove_link($link) { global $post; $post = get_post_meta($post->ID, '_own_price', true); if ($post === 'yes') return ''; return $link; } public function add_shatner_menu() { add_options_page( 'Shatner Plugin Settings', 'Shatner Settings', 'manage_options', 'shatner_plugin', array($this, 'shatner_plugin_settings_page') ); } public function shatner_plugin_settings_page() { include(sprintf("%s/templates/settings.php", dirname(__FILE__))); } /** * hook into WP's admin_init action hook */ public function admin_init() { // add your settings section add_settings_section( 'wp_plugin_template-section_shatner', 'Shatner Plugin Template Settings', array($this, 'settings_section_shatner_plugin_template'), 'wp_plugin_template_shatner' ); foreach($this->form_fields as $setting) { // register your plugin's settings register_setting('wp_plugin_template-group-shatner', $setting['title']); // add your setting's fields add_settings_field( $setting['title'], $setting['description'], array(&$this, 'settings_field_input_'. $setting['type']), 'wp_plugin_template_shatner', 'wp_plugin_template-section_shatner', array( 'field' => $setting['title'] ) ); } } // END public static function activate public function init_form_fields() { $this->form_fields = array( array( 'type' => 'text', 'title' => __('shatner_label', 'woothemes'), 'description' => __('Shatner Label', 'woothemes'), 'default' => __('Name your own price', 'woothemes') ), array( 'type' => 'radio_button', 'title' => __('use_shatner_templates', 'woothemes'), 'description' => __('Shatner Templates override pricing, disable if you want to customize using your theme', 'woothemes'), 'default' => __('1', 'woothemes') ) ); } public function settings_section_shatner_plugin_template() { // Think of this as help text for the section. echo 'These settings set values for Shatner'; } /** * This function provides text inputs for settings fields */ public function settings_field_input_text($args) { // Get the field name from the $args array $field = $args['field']; // Get the value of this setting $value = get_option($field); // echo a proper input type="text" echo sprintf('', $field, $field, $value); } // END public function settings_field_input_text($args) /** * This function provides text inputs for settings fields */ public function settings_field_input_radio_button($args) { // Get the field name from the $args array $field = $args['field']; // Get the value of this setting $value = get_option($field); $html = ' '; $html .= ' Enable
'; $html .= ' '; $html .= ' Disable'; echo $html; } // END public function settings_field_input_radio($args) public function template_override($template, $template_name, $template_path ) { // Modification: Get the template from this plugin, if it exists $plugin_path = untrailingslashit( plugin_dir_path( __FILE__ ) ). '/templates/'; if ( file_exists( $plugin_path . $template_name ) ) { $template = $plugin_path . $template_name; return $template; } return $template; } public function init_css() { wp_register_style('donation_css', plugins_url('custom_styles.css',__FILE__ ), false, '1.0.1', 'all'); wp_enqueue_style( 'donation_css' ); } public function add_to_cart_hook($key) { global $woocommerce; foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) { if(!get_post_meta($values['product_id'], '_own_price', true ) || get_post_meta($values['product_id'], '_own_price', true ) === 'no') { $values['data']->set_price($_POST['price']); continue; } $thousands_sep = wp_specialchars_decode( stripslashes( get_option( 'woocommerce_price_thousand_sep' ) ), ENT_QUOTES ); $decimal_sep = stripslashes( get_option( 'woocommerce_price_decimal_sep' ) ); $_POST['price'] = str_replace($thousands_sep, '', $_POST['price']); $_POST['price'] = str_replace($decimal_sep, '.', $_POST['price']); $_POST['price'] = woocommerce_format_total($_POST['price']); error_log(var_export($_POST,1)); if($cart_item_key == $key) { $values['data']->set_price($_POST['price']); $woocommerce->session->__set($key .'_named_price', $_POST['price']); } } return $key; } public function set_named_price($post) { if($_POST['_own_price']){ if(!get_post_meta($_POST['post_ID'], '_own_price', true )){ add_post_meta($_POST['post_ID'], '_own_price', $_POST['_own_price']); } else { update_post_meta($_POST['post_ID'], '_own_price', $_POST['_own_price']); } } if($_POST['_own_price_enforce_minimum']){ if(!get_post_meta($_POST['post_ID'], '_own_price_enforce_minimum', true )){ add_post_meta($_POST['post_ID'], '_own_price_enforce_minimum', $_POST['_own_price_enforce_minimum']); } else { update_post_meta($_POST['post_ID'], '_own_price_enforce_minimum', $_POST['_own_price_enforce_minimum']); } } } public function add_donation_radio($content) { global $post; woocommerce_wp_radio(array( 'id' => '_own_price', 'class' => 'wc_own_price short', 'label' => __( 'Name your own price', 'woocommerce' ), 'options' => array( 'yes' => 'yes', 'no' => 'no', ) ) ); woocommerce_wp_radio(array( 'id' => '_own_price_enforce_minimum', 'class' => 'wc_own_price_e short', 'label' => __( 'Enforce minimum price (Regular Price)', 'woocommerce' ), 'options' => array( 'yes' => 'yes', 'no' => 'no', ) ) ); } public function add_custom_price( $cart_object ) { global $woocommerce; foreach ( $cart_object->cart_contents as $key => $value ) { if(!get_post_meta($value['product_id'], '_own_price', true ) || get_post_meta($value['product_id'], '_own_price', true ) === 'no') { continue; } $named_price = $woocommerce->session->__get($key .'_named_price'); if($named_price) { $value['data']->price = $named_price; } } } } new SV_WC_Donation();

Plugin Not Working With Woocommerce 2.3.10
By , for WP 4.2.2

I was excited to check out this plugin, but nothing appears on Front-end when activated and options chosen on product page. Will this plugin be upgraded to support latest Woocommerce release?

how to set maximum price for product
By , for WP 4.2.2

Please add features to set maximum price.

Simply Perfect!
By , for WP 4.1.1

I'm using this plugin with Woo 2.3.7 without any issues. But maybe I can say when you assign min.price $100 users should pay min $101. I think the min price of a pay attempt value can be greater than and equal to the min price value. It is the only issue that I saw.
Thank you Sean for this plugin.

Very Handy!
By , for WP 4.1

Works great all round!
Very useful plugin for allowing user to set their price!
Great for using your existing woocommerce to take donations or manually pay invoices.

Needs some tweaks on the minimum price/suggested price at date of this posting, but otherwise - really great work.

Price = price A + Fixed Price
By ,

My problem is that I am putting some wt. in grams under shipping tab, this is multiplied by certain value that I change on daily basis from my back end, now in regular price it is replaced with the result of above calculation, what i need is to give a fixed value to all products which i will feed manually once and need regular price by adding this fixed value to above multiplication.

Can I have any solution to this.

You must log in to submit a review. You can also log in or register using the form near the top of this page.