web-dev-qa-db-ja.com

Buddypressさんのプロフィールタブの名前を変更

言語ファイルを使用せずに、プロファイルタブの名前を変更する場合はどのファイルにアクセスすればよいですか。たとえば、「アクティビティ」と言っているタブの代わりに、「自分のアクティビティ」と言ってほしいのです。 「グループ」の代わりに「私のグループ」などと言ってもいいでしょう。ありがとう

3
Androliyah

ソースを見てください、あなたはすでにそれを知っています。 :)

私はしませんでしたが、このようなコードがあると思います。

_e( 'Activity', 'buddypress' );

…または…

__( 'Activity', 'buddypress' );

関数に従って、それらはwp-includes/l10n.php内の関数translate()のラッパーです。

/**
 * 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 );
}

3つの引数を持つ'gettext'(またはparameters)というフィルタが表示されます。これで、フィルタを使って出力を変更できます。
これをあなたのテーマのfunctions.phpまたはプラグインに追加してください:

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
);

今、私たちはカスタム関数が必要です、それは本当に簡単です:

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

私はコードを少し掘り下げ、それを実行するための「正しい方法」のように見えるものを見つけました。

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 );

'gettext'フィルタは頻繁に呼び出されるため、フックするとパフォーマンスが低下する可能性があるため、これは'gettext'にフックするよりも優れています。

0
J.D.