• 解決済 pinxnake

    (@pinxnake)


    ユーザープロフィールの経歴というところがありますが、
    テーマに the_author_description を入れてみましたが、
    表示される際、改行が無視されてしまいます。

    このテキストを、打ち込み通りに改行されるようにするにはどうすればいいのでしょう。

    テキストエリアに
    タグを入れても無視されてしまいます。

    お助け頂ければ幸いです。

    宜しくお願いします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • mizube

    (@mizube)

    <?php echo wpautop( get_the_author_description() ); ?>

    でどうですか?

    ただしこの場合、正確には入力した通りではなく、 WordPress の投稿のように、通常の改行は br 要素に (リッチエディタでいう Shift + Enter)、 1 行開けた場合には p 要素 (リッチエディタでいう Enter) になります。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    テキストエリアに
    タグを入れても無視されてしまいます。

    変ですね。通常は XHTML タグが認識されるはずです。HTML じゃなくて XHTML なので、 ではなく としなければなりませんが、そうなっていますか?

    トピック投稿者 pinxnake

    (@pinxnake)

    mizubeさま

    返信ありがとうございます。該当箇所を変えたところ改行されました〜
    ありがとうございます。

    ただ、僕の使っているテーマ(option)だと
    シングルページは改行されるようになったのですが、
    Authorページでの表示が改行されません。
    分かる範囲でソースをたどっていくと、

    /***********************************************************
    * op_author_info() - Shows author box on author archives
    * @since 1.1
    ***********************************************************/
    function op_author_info() {
    	global $settings;
    	if($settings['author_bio']) :
    		$curauth = get_userdata(get_query_var('author'));
    		echo get_avatar($curauth->user_email, '100');
    		echo $curauth->description;
    	else:
    		echo '<p>'; _e('You are browsing the archives of','options'); wp_title(''); echo '.</p>';
    	endif;
    }
    
    /***********************************************************
    * op_author_box() - Shows author box after single posts
    * @since 1.1
    ***********************************************************/
    function op_author_box() {
    	global $settings;
    	if($settings['single_bio']) :
    ?>
    	<div id="author-box" class="section">
    		<h3 class="section-header"><?php _e('About the Author','options'); ?></h3>
    		<?php
    			$author_email = get_the_author_email();
    			echo get_avatar($author_email, '100');
    		?>
    		<h4><?php the_author_posts_link(); ?></h4>
    		<?php echo wpautop( get_the_author_description() ); ?>
    	</div>
    <?php
    	endif;
    }

    こんな感じになっています。

    op_author_boxがシングルページの投稿者プロフィール部分で
    op_author_infoがAuthorページの表示部分です。

    op_author_infoの表示も改行させたいのですが、色々やってもうまくいきませんでした。
    何度も恐縮ですが、アドバイス頂ければと思います。

    プログラムをよく理解していないのにも関わらず、難しいテーマのカスタマイズにトライしています。お助けください。
    宜しくお願いします。

    mizube

    (@mizube)

    > pinxnake さん

    とりあえずうまくいったようでよかったです。

    プログラムのことは私もよく分かっていませんので、何か間違っているかもしれませんが、
    op_author_info() の中身を見てみると、 get_userdata() で表示中の Author に該当するユーザー情報のオブジェクトを取得しています。 $curauth は current user の略でしょうね。これにユーザー情報が入りました。
    その文のちょっと後に $curauth->description を echo している箇所があります。

    $curauth->description が current author の description だとすると、 get_the_author_description() となんか似ていますよね?
    ですからきっと、ここを wpautop() してあげれば良いのではないかと思います。

    echo wpautop( $curauth->description );

    これで多分いけるんじゃないでしょうか? 試してみてください。

    > lilyfan さん

    私の環境でもブロック要素は大概無視されてましたので調べてみたところ (@2.6.5, 2.7RC1) 、経歴欄のデフォルトのフィルターに wp_filter_kses() があるので、使用できるタグは $allowedtags のみのようです。
    これは、購読者でも自分の経歴欄を編集することが出来るから? でしょうか? ともかくご報告まで

    トピック投稿者 pinxnake

    (@pinxnake)

    mizubeさん

    ご指摘の所を変更したら、、、
    「できました〜〜〜〜」

    諦めかけてたので、本当に嬉しいです。ありがとうございました。

    ホント、分からないことだらけですが、やり始めてしまったことなので、とことんやり続けます。

    また、宜しくお願いします。

    mizube

    (@mizube)

    解決してよかったです。是非諦めずにがんばってください。

    それから、ちょっと訂正します。前の書き込みで current user と書いてる箇所は current author のつもりでした。直前に get_userdata() があったために user と author がごちゃ混ぜになってしまいました。ちゃんと誤字がないか読み返してはいたのですが、自分の書いた説明を自分が理解できなかったようです、すみません。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    経歴欄のデフォルトのフィルターに wp_filter_kses() があるので、使用できるタグは $allowedtags のみのようです。

    なるほど、好きなタグが書けるのは編集者以上ということになりますね。となると作成者以下では <br /> が使えないのは「仕様」ということになります。

    これは、購読者でも自分の経歴欄を編集することが出来るから? でしょうか? ともかくご報告まで

    はい、「講読者が入力した内容は信用しない」という仕様なので、それで正しいと思います。でも、$allowedposttags じゃなくて $allowedtags なのはちょっと不便かも……。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「プロフィールの経歴を改行したい」には新たに返信することはできません。