Skip to content

Instantly share code, notes, and snippets.

@ideadude
Forked from pbrocks/a-gettext-filter-4-pmpro.php
Last active October 5, 2021 01:31
Show Gist options
  • Save ideadude/ab26eb858920b7bcb546d658e6c92178 to your computer and use it in GitHub Desktop.
Save ideadude/ab26eb858920b7bcb546d658e6c92178 to your computer and use it in GitHub Desktop.
Sometimes we may want to change the wording of the language used in a plugin or theme, but don't want to edit code directly. A cleaner way to go is to use the built in filter that WordPress has called 'gettext'. This filter will search your codebase for translatable strings and replace when an exact match is found.
<?php
/**
* This filter will search your codebase for translatable strings and replace when an exact match is found.
*
* Here we're changing 'Membership' to 'Subscription' for Paid Memberships Pro.
*
* Add this code to your PMPro Customizations Plugin
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
* Note: When adding to your Customizations Plugin, be careful not to include the opening php tag on line 1 above.
*
* @param string $output_text this represents the end result
* @param string $input_text what is written in the code that we want to change
* @param string $domain text-domain of the plugin/theme that contains the code
*
* @return string the result of the text transformation
*/
function my_gettext_membership( $output_text, $input_text, $domain ) {
if ( ! is_admin() && 'paid-memberships-pro' === $domain ) {
$output_text = str_replace( 'Membership Level', 'Subscription', $output_text );
$output_text = str_replace( 'membership level', 'subscription', $output_text );
$output_text = str_replace( 'membership', 'subscription', $output_text );
$output_text = str_replace( 'Membership', 'Subscription', $output_text );
}
return $output_text;
}
add_filter( 'gettext', 'my_gettext_membership', 10, 3 );
// Support _n calls.
function my_ngettext_membership( $output_text, $single, $plural, $number, $domain ) {
if ( $number == 1 ) {
return my_gettext_membership( $output_text, $single, $domain );
} else {
return my_gettext_membership( $output_text, $plural, $domain );
}
}
add_filter( 'ngettext', 'my_ngettext_membership', 10, 5 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment