web-dev-qa-db-ja.com

日付番号を他の言語/スクリプトに変更しますか?

私は以前、私のfunctions.phpで次のようなスクリプトを使って各投稿の日付と時刻の番号を(Khmerのような他の言語の番号と日付のシステムに)変更することができました。

function KhmerNumDate ($text) {
$text = str_replace('1', '១', $text);
$text = str_replace('2', '២', $text);
$text = str_replace('3', '៣', $text);
$text = str_replace('4', '៤', $text);
$text = str_replace('5', '៥', $text);
$text = str_replace('6', '៦', $text);
$text = str_replace('7', '៧', $text);
$text = str_replace('8', '៨', $text);
$text = str_replace('9', '៩', $text);
$text = str_replace('0', '០', $text); 
return $text;
}


add_filter('date', 'KhmerNumDate');
add_filter('the_date', 'KhmerNumDate');
add_filter('the_time', 'KhmerNumDate');

しかし、今では機能していません - 私のコードは良いですか?使用しているテーマによってコードが異なりますか(現在はTwenty-12の修正された子テーマを使用しています)。

2
Nathan

それは、テーマTwenty Twelveの機能の仕方(翻訳を容易にするための努力のせい)であることがわかりました。

Twenty 12の投稿の日付は、functions.phpのtwentytwelve_entry_meta()という関数によって作成されます。

そのため、日付の数字を置き換えたり翻訳したりするために、twentytwelve_entry_meta()関数の$date=を含む行を探します(またはできれば、twentytwelve_entry_meta()関数を子のfunctions.phpに複製します)。

$date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s" pubdate>%4$s</time></a>',
        esc_url( get_permalink() ),
        esc_attr( get_the_time() ),
        esc_attr( get_the_date( 'c' ) ),
        esc_html( get_the_date() )

    );

    //my added code - the_curlang() is used with the xili-language plugin, it returns the current language of the page

$languagedate = the_curlang();

if ( $languagedate == 'km_kh' ) {
$date = str_replace('1', '១', $date);
$date = str_replace('2', '២', $date);
$date = str_replace('3', '៣', $date);
$date = str_replace('4', '៤', $date);
$date = str_replace('5', '៥', $date);
$date = str_replace('6', '៦', $date);
$date = str_replace('7', '៧', $date);
$date = str_replace('8', '៨', $date);
$date = str_replace('9', '៩', $date);
$date = str_replace('0', '០', $date); 
}

それからすべてが素晴らしく見えます!

私はあまりプログラマーではないので、私のコードは最良の選択肢ではないかもしれませんが、少なくともそれはうまくいきます。

2
Nathan

この方法を試してください。

Date、the_date、the_timeをget_date、get_the_date、get_the_timeに変更します。

function KhmerNumDate ($text) {
    $text = str_replace('1', '១', $text);
    $text = str_replace('2', '២', $text);
    $text = str_replace('3', '៣', $text);
    $text = str_replace('4', '៤', $text);
    $text = str_replace('5', '៥', $text);
    $text = str_replace('6', '៦', $text);
    $text = str_replace('7', '៧', $text);
    $text = str_replace('8', '៨', $text);
    $text = str_replace('9', '៩', $text);
    $text = str_replace('0', '០', $text); 
    return $text;
    }


add_filter('get_date', 'KhmerNumDate');
add_filter('get_the_date', 'KhmerNumDate');
add_filter('get_the_time', 'KhmerNumDate');
3
haksrun

特定のニーズに合わせてWordpress組み込み関数を使用することをお勧めします。これは date_i18n($date_format, $time, $gmt) です。 php date()フォーマット を渡すだけでtimestampとWordpressはあなたの言語で日付を表示します(wp-config.phpで定義された言語)。

コーデックスページからの例:

echo date_i18n(get_option('date_format') ,strtotime("11/15-1976")); 
1
Ahmad M