0

wondering if anyone can help, i need to change the name of the sections on the user profile page (the name, contact info titles) etc

I know how to change the fields via a functions plugin but can't figure out the section names.

Ideally I'd prefer to do it via functions plugin than editing core files.

Thanks

1 Answer 1

0

To clarify the "plugin/functions.php" issue, see: Where do I put the code snippets I found here or somewhere else on the web?

You can use the following modified version from toscho's Retranslate Plugin. I changed post_type for pagenow. Configure the translations in the final array.

<?php
/*
Plugin Name: Retranslate Profile Page
Description: Adds translations.
Version:     0.1b
Author:      Thomas Scholz
Author URI:  http://toscho.de
License:     GPL v2
*/
class Toscho_Retrans {
    // store the options
    protected $params;

    /**
     * Set up basic information
     * 
     * @param  array $options
     * @return void
     */
    public function __construct( array $options ) {
        $defaults = array (
            'domain'       => 'default'
        ,   'context'      => 'backend'
        ,   'replacements' => array()
        ,   'pagenow'      => array()
        );

        $this->params = array_merge( $defaults, $options );

        // When to add the filter
        $hook = 'backend' == $this->params['context'] 
            ? 'admin_head' : 'template_redirect';

        add_action( $hook, array ( $this, 'register_filter' ) );
    }

    /**
     * Conatiner for add_filter()
     * @return void
     */
    public function register_filter() {
        add_filter( 'gettext', array ( $this, 'translate' ), 10, 3 );
    }

    /**
     * The real working code.
     * 
     * @param  string $translated
     * @param  string $original
     * @param  string $domain
     * @return string
     */
    public function translate( $translated, $original, $domain ) {
        // exit early
        if ( 'backend' == $this->params['context'] ) {
            global $pagenow;

            if ( ! empty ( $pagenow ) 
                && ! in_array( $pagenow, $this->params['pagenow'] ) )
            {
                return $translated;
            }
        }

        if ( $this->params['domain'] !== $domain ) {
            return $translated;
        }

        // Finally replace
        return strtr( $original, $this->params['replacements'] );
    }
}

// Sample code
// Replace 'Name' and 'Personal Options' on the profile page
$Toscho_Retrans = new Toscho_Retrans(
    array (
        'replacements' => array ( 
            'Name' => 'The Name'
        ,   'Personal Options' => 'The Options'
        ,   'Something Else' => 'Lorem Ipsum'
        )
    ,   'pagenow'    => array ( 'profile.php', 'edit-user.php' )
    )
);

Another option is to use jQuery:

add_action( 'admin_print_footer_scripts', 'rename_profile_h3' );

function rename_profile_h3()
{ 
    global $pagenow;
    if( !in_array( $pagenow, array('profile.php', 'edit-user.php') ) )
      return;
    ?>
<script>
jQuery(document).ready(function($){
    $("#your-profile").find("h3:contains('Name')").text('The Name');
    $("#your-profile").find("h3:contains('Personal Options')").text('The Options');
});
</script>
    <?php
}

Both examples are running in the admin pages Profile and User Edit.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.