admin管理员组

文章数量:1313815

I am developing a site that is using YayCurrency to allow USD and CAD purchases, but the plugin is duplicating the subscription pricing string. I've been able to hide the duplication in a couple areas using css, but I just want to be able to CHANGE the pricing string programmatically to say the price is the correct currency and then "monthly" instead of all the stupid "now, and $XX on the first of each month"

Here is a page where the duplication is happening: /

Code that has been attempted:

This technically works, but I don't want period fully removed, rather I need to to be simplified...

add_filter( 'woocommerce_subscriptions_product_price_string_inclusions', 'wpd_override_subscription_price_string', 10, 2 );
function wpd_override_subscription_price_string( $include, $product ) {

    $include['subscription_period'] = false;

    return $include;

}

This works to get me to "$XX now, and $XX monthly" but I'd also like to remove the full "now, and ...":

add_filter( 'woocommerce_subscriptions_product_price_string', 'wpd_change_subscription_product_string', 10, 3 );
function wpd_change_subscription_product_string( $subscription_string, $product, $include ) {
if ( $include['subscription_period'] ){

$current_string = 'on the 1st of each month';
$new_string = 'monthly';
$subscription_string = str_replace($current_string, $new_string, $subscription_string);

}

return $subscription_string;

}

I am developing a site that is using YayCurrency to allow USD and CAD purchases, but the plugin is duplicating the subscription pricing string. I've been able to hide the duplication in a couple areas using css, but I just want to be able to CHANGE the pricing string programmatically to say the price is the correct currency and then "monthly" instead of all the stupid "now, and $XX on the first of each month"

Here is a page where the duplication is happening: https://memberships.iwanttocraft/shop/

Code that has been attempted:

This technically works, but I don't want period fully removed, rather I need to to be simplified...

add_filter( 'woocommerce_subscriptions_product_price_string_inclusions', 'wpd_override_subscription_price_string', 10, 2 );
function wpd_override_subscription_price_string( $include, $product ) {

    $include['subscription_period'] = false;

    return $include;

}

This works to get me to "$XX now, and $XX monthly" but I'd also like to remove the full "now, and ...":

add_filter( 'woocommerce_subscriptions_product_price_string', 'wpd_change_subscription_product_string', 10, 3 );
function wpd_change_subscription_product_string( $subscription_string, $product, $include ) {
if ( $include['subscription_period'] ){

$current_string = 'on the 1st of each month';
$new_string = 'monthly';
$subscription_string = str_replace($current_string, $new_string, $subscription_string);

}

return $subscription_string;

}
Share Improve this question edited Jan 30 at 23:04 LoicTheAztec 254k24 gold badges397 silver badges443 bronze badges asked Jan 30 at 22:11 Heather HansonHeather Hanson 133 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

To remove "$XX now, and " substring from "$XX now, and $XX monthly" string, use the following code replacement:

add_filter( 'woocommerce_subscriptions_product_price_string', 'wpd_change_subscription_product_string', 10, 3 );
function wpd_change_subscription_product_string( $subscription_string, $product, $include ) {
    if ( ! $include['subscription_period'] ) return $subscription_string;

    $sub_string_1 = 'on the 1st of each month';

    if ( strpos( $subscription_string, $sub_string_1 ) !== false ) {
        $subscription_string = str_replace( $sub_string_1, 'monthly', $subscription_string );
    }

    $sub_string_2 = 'now, and ';
    $position     = strpos( $subscription_string, $sub_string_2 );

    if ( $position !== false ) {
        $offset = $position + strlen( $sub_string_2 );

        $subscription_string = substr($subscription_string, $offset);
    }
    return $subscription_string;
}

But if you want to remove just "now, and " substring from "$XX now, and $XX monthly" string, use the following code replacement:

add_filter( 'woocommerce_subscriptions_product_price_string', 'wpd_change_subscription_product_string', 10, 3 );
function wpd_change_subscription_product_string( $subscription_string, $product, $include ) {
    if ( ! $include['subscription_period'] ) return $subscription_string;

    $sub_string_1 = 'on the 1st of each month';

    if ( strpos( $subscription_string, $sub_string_1 ) !== false ) {
        $subscription_string = str_replace( $sub_string_1, 'monthly', $subscription_string );
    }

    $sub_string_2 = 'now, and ';

    if ( strpos( $subscription_string, $sub_string_2 ) !== false ) {
        $subscription_string = str_replace( $sub_string_2, '', $subscription_string );
    }
    return $subscription_string;
}

Both should work.

本文标签: phpWooCommerce Subscription Price String Duplication issueStack Overflow