web-dev-qa-db-fra.com

Renommer l’onglet Profil de Buddypress

Sans utiliser un fichier de langue, vers quel fichier pourrais-je aller si je voulais renommer les onglets de profil? Par exemple, au lieu de l'onglet "Activité", je souhaite qu'il soit "Mon activité". Au lieu de "Groupes", je le ferais dire "Mes groupes" etc. Merci

3
Androliyah

Regardez la source, vous le savez déjà. :)

Je ne l’ai pas fait, mais je parie qu’un morceau de code ressemblant à ceci:

_e( 'Activity', 'buddypress' );

… ou …

__( 'Activity', 'buddypress' );

Suivez les fonctions, ce sont des wrappers pour la fonction translate() dans wp-includes/l10n.php:

/**
 * Retrieves the translation of $text. If there is no translation, or
 * the domain isn't loaded, the original text is returned.
 *
 * @see __() Don't use translate() directly, use __()
 * @since 2.2.0
 * @uses apply_filters() Calls 'gettext' on domain translated text
 *      with the untranslated text as second parameter.
 *
 * @param string $text Text to translate.
 * @param string $domain Domain to retrieve the translated text.
 * @return string Translated text
 */
function translate( $text, $domain = 'default' ) {
    $translations = &get_translations_for_domain( $domain );
    return apply_filters( 'gettext', $translations->translate( $text ), $text, $domain );
}

Vous voyez que vous obtenez un filtre: 'gettext' avec trois arguments (ou parameters ). Vous pouvez maintenant utiliser le filtre pour modifier la sortie.
Ajoutez ceci au functions.php de votre thème ou à un plugin:

add_filter( 
    'gettext', // filter name
    'wpse_57673_change_buddypress_profile_tabs', // name of your custom function
    10, // priority
    3 // number of arguments you want to get
);

Nous avons maintenant besoin de la fonction personnalisée, c’est très simple:

function wpse_57673_change_buddypress_profile_tabs( $translated, $original_text, $domain )
{
    if ( 'buddypress' !== $domain )
    {
        return $translated; // not your text
    }

    // find the text to change
    switch ( $original_text )
    {
        case 'Activity':
            return 'My Activity';

        case 'Groups':
            return 'My Groups';

        default:
            return $translated;
    }
}
1
fuxia

J'ai creusé dans le code un peu et trouvé ce qui semble être la "bonne façon" de le faire:

function wpse_57673_change_bp_profile_tabs() {

    // Rename a primary nav item.
    buddypress()->members->nav->edit_nav(
        array( 'name' => 'My Activity' )
        , 'activity'
    );

    // Rename a secondary nav item.
    buddypress()->members->nav->edit_nav(
        array( 'name' => 'Saved Posts' )
        , 'favorites'
        , 'activity'
    );
}
add_action( 'bp_setup_nav', 'wpse_57673_change_profile_tabs', 20 );

Cela est préférable à l’accrochage dans 'gettext', car le filtre 'gettext' est appelé très souvent et qu’il peut donc nuire aux performances.

0
J.D.