サポート » 使い方全般 » プロフィールにあるブログ上の表示名(+ニックネーム)で、ひらがなや

  • 解決済 shinozaki

    (@shinozaki)


    最近も類似の質問をさせていただいたのですが、
    途中でトピックのタイトルと内容がズレてきたと感じ、
    改めて質問させてください。

    質問は、
    プロフィールにあるブログ上の表示名で、ひらがなやカタカナを使用したい
    というものです。

    たぶん、パーマリンクの問題だと思うのですが、
    パーマリンクをデフォルト以外に設定し、ブログ上の表示名に
    ひらがなかカタカナを使用して、<?php the_author_posts_link ?>で
    表示させたときに、クリックしてみると
    400エラーでbad requestが表示されます。
    (その時に、画面上には「 Your browser sent a request that this server could not understand.」と表示されます。)

    また、wp author slugというプラグインで、
    URLにユーザー名を表示させずに、ブログ上の表示名を
    表示させるようにしていますが、
    このプラグインを停止すると、URLの表示がユーザー名なので、問題なくなります
    (ユーザー名の登録の時は、ひらがなやカタカナの使用が出来ないので、問題が無いかと思われます。)
    ただ、セキュリティのことを考えると、wp author slugは
    はずせないと考えているので、ブログ上の表示名はひらがなかカタカナの
    使用も出来るようにしていただきたいです。

    そして、どのブラウザでも同じようにbad requestになるので
    やはりパーマリンクの問題ではないかと考えています。

    ちなみに、サーバーはエックスサーバーを使用しています。
    サーバーの問題なのでしょうか?

    以上が、私の質問なのですが、
    今回のような質問は根本に解決が難しいものなのでしょうか?

    わかる範囲でもありがたいので、
    情報をなにか提供していただきたいです。
    よろしくお願いします。

15件の返信を表示中 - 1 - 15件目 (全21件中)
  • the_author_posts_link()等、名前を実際に書いている関数に対してフィルタをかけて表示時のみひらがな等に変換するか、ページレンダリング終了後にJS等で書き直す…という考え方ではダメですか?無理に内部に日本語を入れて後のアップデートで困るよりはよいかと思いますが…。

    トピック投稿者 shinozaki

    (@shinozaki)

    V.J.Catkickさん

    ご返信ありがとうございます。

    大変困っていたので、ご返信していただいて非常に感謝致します。

    the_author_posts_link()等、名前を実際に書いている関数に対してフィルタをかけて表示時のみひらがな等に変換するか、ページレンダリング終了後にJS等で書き直す

    ということを記載していただいたのですが、
    私のレベルでは、V.J.Catkickさんがおっしゃっていただいたことを
    どうやって実現することが出来るのか、ということについて
    具体的なコードなどでの表現方法が想像できてないです。

    もし、分かるようでしたら、
    なにかアドバイスやヒントなどをいただけませんでしょうか・・

    >名前を実際に書いている関数に対してフィルタをかけて
    前レスを書いた後に少し考えたのですが、add_filter()を使って、contentsがジェネレートされた後(で、かつ表示される前)に、特定の文字列を書き直す…という方法がシンプルで素直ですね。

    add_filter( 'the_content', 'example_func' );

    こんな感じに記述して、example_func()というのを作って、その中でページの判定をしておいて、文字列操作する…というイメージです。

    JSの場合は、普通にgetElementById()あたりで持って来てinnnerHTMLを書き直すという方法がストレートです。が、ご存知の通りJSはページレンダリングが終了してからの描画になりますので、構成やロード時間によっては見栄が悪くなります。

    トピック投稿者 shinozaki

    (@shinozaki)

    ご回答ありがとうございます。

    JSの場合は、見栄えの問題が~ということもありますので
    今回は、文字列操作をする方法にしようと思います。

    add_filter()を使って、contentsがジェネレートされた後(で、かつ表示される前)に、特定の文字列を書き直す…という方法がシンプルで素直ですね。

    example_func()というのを作って、その中でページの判定をしておいて、文字列操作する…というイメージです。

    ということでしたので、

    コードを考えてみたのですが、
    以下のコードのその先(中身の部分という表現が
    正しいのでしょうか)が分かっていないです。
    (以下のコード自体も怪しいですが)

    <?php
    function example_func() {
    
    }
    add_filter( 'the_content', 'example_func' );
    ?>

    これはどうなのでしょうか・・

    あってます。

    function example_func( $content ) {
    
    }

    で、

    $content

    に通常記述されるページのソースが入ってきますので、それに対して文字列を操作する…というイメージです。

    http://wordpress.org/plugins/edit-author-slug/
    に変更されては?
    これは、ひらがなでも機能します。

    トピック投稿者 shinozaki

    (@shinozaki)

    たびたび申し訳ありません。

    通常記述されるページのソースが入ってきますので、それに対して文字列を操作する

    ということなのですが、
    文字列を操作するとはどういうことなのか、
    スラッグなどとどう関わってくるのか、など
    私がいまいち理解できませんでした。
    (本当に申し訳ないです。)

    もう少し具体的に
    教えていただいてもよろしいでしょうか?
    お手数かけます。

    入って来るのはページのソース(通常、the_contents()で表示される部分、HTMLです)なので、これに対して正規表現等の文字列操作関数(PHP)を使って必要部分を置き換えてやればよい、ということです。スラッグ等とは関係ありません。

    例えば
    ..... <a href="...." >my name</a>....
    こういった文字列をpreg_replace()あたりで
    ..... <a href="...." >わたしの名前</a>....
    と書き換えてやれば、ページを生成した後の見た目のみ変更出来る、ということです。

    preg_replace()の説明はこちら:
    http://php.net/manual/ja/function.preg-replace.php

    PHPの書き方について議論する場所ではないので、頑張って勉強してものにするか、面倒なようであれば、orangethymeさんが仰っているような既存のプラグインを使うというのも手だと思います。

    トピック投稿者 shinozaki

    (@shinozaki)

    ご返信が遅くなってしまい、申し訳ありませんでした。

    サイト上の表示名でひらがなやカタカナを使用することについて、
    コードを作成する場合ですが、
    勉強してみても、理解しきれませんでした。
    (理解にもかなりの時間を要するかもしれない、とも実感しました。)

    そのため、あきらめてプラグインにしようと思い、
    orangethymeさんの紹介にもあったように
    edit author slugを使用することにしようと思いました。
    しかし、プラグインを有効化し、プロフィール画面に進み、
    edit author slugの項目の欄で、customにチェックを入れ、
    ひらがなを入力して、「ユーザーを更新」をクリックすると、
    エラーと言いましょうか、「%e3」のようなものが
    羅列されるという状況でした。

    実際、カタカナやひらがなをサイト上の表示名に設定して
    <?php the_author_posts_link ?>をクリックすると、
    スラッグに「%e3」のようなものがずらずらと並ぶ状況です。

    プラグインの全停止やfunctions.phpの内容の変更
    などを行っても効果が無く、
    原因もわからない状況です。

    ご報告という形になってしまいましたが、
    引き続き、情報などを教えていただけますとありがたいと思います。

    本当に申し訳なく、ご迷惑ですが、お願い致します。

    そういえば、まさかとは思いますが

    WP Multibyte Patch

    これ、入ってますよね?

    まだであれば
    http://wordpress.org/plugins/wp-multibyte-patch/

    ここにありますので、入れてみて下さい。

    トピック投稿者 shinozaki

    (@shinozaki)

    ご回答ありがとうございます。

    WP Multibyte Patchは入っています。
    導入後、特にいじったというわけではないのですが、
    なにかする必要などあるのでしょうか。

    初歩的な質問で申し訳ございません。

    > WP Multibyte Patch

    これは入れておけばよいというおまじないみたいなものですので…。

    >スラッグに「%e3」のようなものがずらずらと並ぶ状況

    URLのところに並ぶ文字はエンコードされるのが一般的なので、ある意味これは正しい挙動だと思われます(表示云々は別として)。

    なんか思うに、やはり後々の互換性やサードパーティープラグインのサポートのことを考えると、やはり後から置き換える方が現実的かなぁ…と。

    トピック投稿者 shinozaki

    (@shinozaki)

    何度もご返信いただき、本当にありがとうございます。

    WP Multibyte Patchはおまじないなんですね・・・

    スラッグは、なぜひらがなとカタカナだけがダメなのかわからないです
    漢字が大丈夫というもの本当に不思議です

    後から置き換えるというのは、
    preg_replace()を使うパターンのことでしょうか?
    私にはやはり理解できなくて大変苦労しています。
    いつ、目的のコードが書けるのか・・という状態なので
    やはり厳しいのでしょうか?

    数日間調べたり、勉強したりで解決できるものでもなさそうですし・・・

    ヒントです。

    function.phpにこんな感じに書きます。

    function example_filter( $content ) {
    
    	$new_content = preg_replace( '/これ/', 'それ', $content );
    
    	return $new_content;
    }
    
    add_filter( 'the_content', 'example_filter' );

    元になる文字列は「これ」で、置き換える言葉は「それ」です。試しにfunction.phpに書き加えて、エントリの内容に
    「なんとかかんとかこれとかあれとか」
    と適当に書いて、それが
    「なんとかかんとかそれとかあれとか」
    に変わるのを確認してみて下さい。

    トピック投稿者 shinozaki

    (@shinozaki)

    V.J.Catkickさんが示してくださいましたコードを
    実際に入れてみたところ、投稿の内容で
    「これ」の部分が「それ」になっていました。

    また、V.J.Catkickさんが示してくださいましたコードを
    もとに調べてみたところ、

    add_filter( ‘the_content’, ‘example_filter’ );
    のthe_contentの部分が投稿内容にかかっているみたいなので、
    この部分をスラッグにかかるようにし、

    $new_content = preg_replace( ‘/これ/’, ‘それ’, $content );
    の’/これ/’という部分と’それ’という部分にそれぞれ
    スラッグが入るようにする

    という感じの印象というかを持ったのですが、
    どうなのでしょうか?

    また、スラッグに関するadd_filterと「これ」や「それ」の代わりに入るコードが
    調べてもよくわからなかったのですが、
    そもそもスラッグに関するadd_filterはないのでしょうか・・

15件の返信を表示中 - 1 - 15件目 (全21件中)
  • トピック「プロフィールにあるブログ上の表示名(+ニックネーム)で、ひらがなや」には新たに返信することはできません。