• They had functionality, like being able to see the additional fields in the email and order page, and then removed it and now are trying to charge. I have to go into my clients database to get the info now and change to a different plugin.

    This is a clear bait and switch and I hope WordPress does something about it. The free version is basically useless now.

Viewing 10 replies - 1 through 10 (of 10 total)
  • Moderator Jan Dembowski

    (@jdembowski)

    Forum Moderator and Brute Squad

    This is a clear bait and switch and I hope WordPress does something about it. The free version is basically useless now.

    Does what?

    Thread Starter ExecuServices

    (@mpratt62)

    Hi Jan,

    I was under the impression that plugins could not offer functionality and then change it to be paid after it is installed. It seems like it is classic bait and switch. Is that allowed?

    Thanks,
    Michael

    Moderator Jan Dembowski

    (@jdembowski)

    Forum Moderator and Brute Squad

    The plugin guidelines are clear and posted here.

    https://developer.www.ads-software.com/plugins/wordpress-org/detailed-plugin-guidelines/

    There is literally no where in that guideline that says plugin authors may not remove features. Would you complain if they added new features?

    *Drinks coffee*

    Before you point to this item:

    https://developer.www.ads-software.com/plugins/wordpress-org/detailed-plugin-guidelines/#5-trialware-is-not-permitted

    Removing features from the “non-pro” version isn’t the samething as trialware.

    Thread Starter ExecuServices

    (@mpratt62)

    I didnt say they removed features, I said they used a classically old method of bait and switch. If that is allowed, then my bad. Still bad practice, and I still feel the plugin author deserves a bad review because:

    1. There was no notice that the functionality would be removed.
    2. There is a direct impact on customer facing functionality.
    3. The plugin no longer offers functionality it claims to without paying for it. (The functionality is technically there, but you cannot use it, or see it, without buying the premium version, which renders it literally useless)

    I appreciate you taking the time to provide the correct information to me though, I can see how this would NOT be WordPress’s problem, nor would you guys be able to do anything about it.

    • This reply was modified 4 years, 11 months ago by ExecuServices. Reason: appreciation for mods
    Moderator Jan Dembowski

    (@jdembowski)

    Forum Moderator and Brute Squad

    1. There was no notice that the functionality would be removed.

    Where would that be? In the change log?

    2. There is a direct impact on customer facing functionality.

    That’s also a misunderstanding. There are no customers here, there is nothing on this site that is sold. There are no companies here either, just some people who donated open source code and on a volunteer basis support that code on their free time.

    People who publish plugins and themes here are permitted to upsell, meaning this could be a “lite” version and more features are available in the “pro” or “premium” version. As you now know, that is permitted.

    3. The plugin no longer offers functionality it claims to without paying for it. (The functionality is technically there, but you cannot use it, or see it, without buying the premium version, which renders it literally useless)

    Which functionality is that? That’s an honest question from me. Most plugins do offer on their plugin page here some idea of what it comes with and what is in the pro version. That does not exist here so if there’s something on the plugin page that does not actually exist in this plugin then that may be something actionable by the plugins team.

    Saying a plugin does X, Y and Z on the plugin page and it doesn’t would be a problem. At a minimum the plugin’s page would need to be updated to spell that out.

    Thread Starter ExecuServices

    (@mpratt62)

    1. There was no notice that the functionality would be removed.

    Where would that be? In the change log?

    2. There is a direct impact on customer facing functionality.

    That’s also a misunderstanding. There are no customers here, there is nothing on this site that is sold. There are no companies here either, just some people who donated open source code and on a volunteer basis support that code on their free time.

    People who publish plugins and themes here are permitted to upsell, meaning this could be a “lite” version and more features are available in the “pro” or “premium” version. As you now know, that is permitted.

    Ahh, I see by these 2 responses that you must be unfamiliar with the fact that this is a WooCommerce reliant plugin.

    1. Woocommerce is an eCommerce plugin for WordPress.
    2. eCommerce is for “customers” to come to a website to purchase things. So when something that is “customer” facing, like an email notification/confirmation, it is kind of important. I was not saying that I was the customer, but the eCommerce customers are no longer seeing the notification that they used to get before the change, which is a really big deal when it comes to eCommerce and confirmations. This being perfectly acceptable by WordPress moderators (thanks for your service) makes WooCommerce, and thus, WordPress, not very sustainable for eCommerce purposes if other developers follow suit. It is also misleading because of the following response as well.

    As for the notice, it is important because, it is customer facing, as described, and the notice could be an email blast to users, a notification within WordPress admin area itself, something to say that the functionality that is expected will no longer work.

    The problem here isnt with deciding to charge for this functionality, the problem is how it was executed and communicated (or NOT communicated) to users.

    Best practice for something like this, and I have seen a few plugin developers do this, is to discontinue the plugin and have WordPress show a notification, at the very least.

    3. The plugin no longer offers functionality it claims to without paying for it. (The functionality is technically there, but you cannot use it, or see it, without buying the premium version, which renders it literally useless)

    Which functionality is that? That’s an honest question from me. Most plugins do offer on their plugin page here some idea of what it comes with and what is in the pro version. That does not exist here so if there’s something on the plugin page that does not actually exist in this plugin then that may be something actionable by the plugins team.

    Saying a plugin does X, Y and Z on the plugin page and it doesn’t would be a problem. At a minimum, the plugin’s page would need to be updated to spell that out.

    So were the rest of the responses not honest?

    The functionality of this plugin is to add a custom field to the checkout process of WooCommerce. Often it is additional instructions of some sort, or a code, or something like that. When the email confirmation goes out, it adds that information to the email and the order. This is pretty standard functionality and is not only expected but expressed in their description of the plugin.

    This functionality is now removed and put behind a paywall. So while you can still add the custom field, getting the information out of that field (either through email, checking the order on the website, OR through the admin) is hidden.

    • This reply was modified 4 years, 11 months ago by ExecuServices.
    Plugin Author quadlayers

    (@quadlayers)

    Hello @mpratt62

    The email support has totally rebuilt in the pro version and that’s why we haven’t included in the free version

    We understand this is an important feature and we’ve provided a fix for this issue

    You can find the code in this threated. This code is an adaptation of the original code to work with the current plugin core.

    With this code, you’ll get the exact functionality that version 4.3.1 which is the previous author version

    https://www.ads-software.com/support/topic/custom-fields-no-longer-in-emails/

    Take in mind this plugin was unuseful and full of errors before our arrival. You can see the plugin was losing installs before our updates

    https://www.ads-software.com/plugins/woocommerce-checkout-manager/advanced/

    We were forced to rebuild the entire plugin to make it useful and compatible with the latest WooCommerce and WordPress versions

    Some important decisions were taken and some features were removed

    • This reply was modified 4 years, 10 months ago by quadlayers.
    Plugin Author quadlayers

    (@quadlayers)

    we spend hundreds of development hours to get the maximum compatibility with the previous author version which was a real mess

    Now you have a professional plugin that will be supported and maintained, all for free, and you always can rollback to 4.3.1

    Thread Starter ExecuServices

    (@mpratt62)

    @quadlayers seems legit.

    Plugin Author quadlayers

    (@quadlayers)

    @mpratt62 here is the code to include fix the email sending, hope to can change your review

    kind regards

    /**
    * Plugin Name: WooCommerce Checkout Manager Email Fix
    * Description: Manages WooCommerce Checkout, the advanced way.
    * Version: 1.0.0
    * Author: QuadLayers
    * Author URI: https://www.quadlayers.com
    */
    add_action(‘woocommerce_email_after_order_table’, ‘wooccm_order_receipt_checkout_details’, 10, 3);

    function wooccm_order_receipt_checkout_details($order, $sent_to_admin, $plain_text = ”) {

    if (class_exists(‘WOOCCM’)) {

    $billing_defaults = WOOCCM()->billing->get_defaults();
    $shipping_defaults = WOOCCM()->shipping->get_defaults();
    $additional_defaults = WOOCCM()->additional->get_defaults();

    $billing = WOOCCM()->billing->get_fields();
    $shipping = WOOCCM()->shipping->get_fields();
    $additional = WOOCCM()->additional->get_fields();

    if (!empty($billing)) {

    foreach ($billing as $btn) {

    if (!in_array($btn[‘name’], $billing_defaults)) {

    if (( get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true) !== ” ) &&
    !empty($btn[‘label’]) &&
    $btn[‘type’] !== ‘heading’ &&
    $btn[‘type’] !== ‘multiselect’ &&
    $btn[‘type’] !== ‘file’ &&
    $btn[‘type’] !== ‘multicheckbox’
    ) {
    echo $btn[‘label’] . ‘: ‘ . nl2br(get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true));
    echo “\n”;
    } elseif (
    !empty($btn[‘label’]) &&
    $btn[‘type’] == ‘heading’ &&
    $btn[‘type’] !== ‘multiselect’ &&
    $btn[‘type’] !== ‘file’ &&
    $btn[‘type’] !== ‘multicheckbox’
    ) {
    echo $btn[‘label’];
    echo “\n”;
    } elseif (
    ( get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true) !== ” ) &&
    !empty($btn[‘label’]) &&
    $btn[‘type’] !== ‘heading’ &&
    $btn[‘type’] !== ‘file’ &&
    (
    $btn[‘type’] == ‘multiselect’ || $btn[‘type’] == ‘multicheckbox’
    )
    ) {
    $value = get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true);
    $strings = maybe_unserialize($value);
    echo $btn[‘label’] . ‘: ‘;
    if (!empty($strings)) {
    if (is_array($strings)) {
    $iww = 0;
    $len = count($strings);
    foreach ($strings as $key) {
    if ($iww == $len – 1) {
    echo $key;
    } else {
    echo $key . ‘, ‘;
    }
    $iww++;
    }
    } else {
    echo $strings;
    }
    } else {
    echo ‘-‘;
    }
    echo “\n”;
    }
    }
    }
    }

    if (!empty($shipping)) {

    foreach ($shipping as $btn) {

    if (!in_array($btn[‘name’], $shipping_defaults)) {

    if (( get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true) !== ” ) &&
    !empty($btn[‘label’]) &&
    $btn[‘type’] !== ‘heading’ &&
    $btn[‘type’] !== ‘multiselect’ &&
    $btn[‘type’] !== ‘file’ &&
    $btn[‘type’] !== ‘multicheckbox’
    ) {
    echo $btn[‘label’] . ‘: ‘ . nl2br(get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true));
    echo “\n”;
    } elseif (
    !empty($btn[‘label’]) &&
    $btn[‘type’] == ‘heading’ &&
    $btn[‘type’] !== ‘multiselect’ &&
    $btn[‘type’] !== ‘file’ &&
    $btn[‘type’] !== ‘multicheckbox’
    ) {
    echo $btn[‘label’];
    echo “\n”;
    } elseif (
    ( get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true) !== ” ) &&
    !empty($btn[‘label’]) &&
    $btn[‘type’] !== ‘heading’ &&
    $btn[‘type’] !== ‘file’ &&
    (
    $btn[‘type’] == ‘multiselect’ || $btn[‘type’] == ‘multicheckbox’
    )
    ) {
    $value = get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true);
    $strings = maybe_unserialize($value);
    echo $btn[‘label’] . ‘: ‘;
    if (!empty($strings)) {
    if (is_array($strings)) {
    $iww = 0;
    $len = count($strings);
    foreach ($strings as $key) {
    if ($iww == $len – 1) {
    echo $key;
    } else {
    echo $key . ‘, ‘;
    }
    $iww++;
    }
    } else {
    echo $strings;
    }
    } else {
    echo ‘-‘;
    }
    echo “\n”;
    }
    }
    }
    }

    if (!empty($additional)) {

    foreach ($additional as $btn) {

    if (!in_array($btn[‘name’], $additional_defaults)) {

    if (( get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true) !== ” ) &&
    !empty($btn[‘label’]) &&
    $btn[‘type’] !== ‘heading’ &&
    $btn[‘type’] !== ‘multiselect’ &&
    $btn[‘type’] !== ‘file’ &&
    $btn[‘type’] !== ‘multicheckbox’
    ) {
    echo $btn[‘label’] . ‘: ‘ . nl2br(get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true));
    echo “\n”;
    } elseif (
    !empty($btn[‘label’]) &&
    $btn[‘type’] == ‘heading’ &&
    $btn[‘type’] !== ‘multiselect’ &&
    $btn[‘type’] !== ‘file’ &&
    $btn[‘type’] !== ‘multicheckbox’
    ) {
    echo $btn[‘label’];
    echo “\n”;
    } elseif (
    ( get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true) !== ” ) &&
    !empty($btn[‘label’]) &&
    $btn[‘type’] !== ‘heading’ &&
    $btn[‘type’] !== ‘file’ &&
    (
    $btn[‘type’] == ‘multiselect’ || $btn[‘type’] == ‘multicheckbox’
    )
    ) {
    $value = get_post_meta($order->get_id(), sprintf(‘_%s’, $btn[‘key’]), true);
    $strings = maybe_unserialize($value);
    echo $btn[‘label’] . ‘: ‘;
    if (!empty($strings)) {
    if (is_array($strings)) {
    $iww = 0;
    $len = count($strings);
    foreach ($strings as $key) {
    if ($iww == $len – 1) {
    echo $key;
    } else {
    echo $key . ‘, ‘;
    }
    $iww++;
    }
    } else {
    echo $strings;
    }
    } else {
    echo ‘-‘;
    }
    echo “\n”;
    }
    }
    }
    }
    }
    }

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘Very dishonest and misleading’ is closed to new replies.