「wp_filter_kses」の検索結果

9件の結果を表示中 - 1 - 9件目 (全9件中)
  • フォーラム: プラグイン
    返信が含まれるトピック: Fancier Author Boxで改行を反映させたい。

    プロフィール情報欄で br タグを入力できるようにする方法でどうでしょうか?

    functions.php 等に

    remove_filter( 'pre_user_description', 'wp_filter_kses' );
    
    function my_filter_description( $data ) {
    	return addslashes( wp_kses( stripslashes( $data ), array( 'br' => array() ) ) );
    }
    add_filter( 'pre_user_description', 'my_filter_description' );

    これで、プロフィール情報欄に br タグが入力できるようになるので、改行したい場所に <br> を挿入してください。

    フォーラム: 使い方全般
    返信が含まれるトピック: カテゴリーのトップページ制作について

    category_description ではHTMLタグが使えない(削除されてしまいます)ので、使えるようにする必要があります。

    functions.phpに下記コードを。

    remove_filter( 'pre_term_description', 'wp_filter_kses' );
    remove_filter('term_description','wpautop');

    固定ページを利用する事でも可能かと思いますので参考までに。

    トピック投稿者 RamJamCat

    (@ramjamcat)

    popupさん、jim912さん ご返信有難うございます!

    そうですね、remove_filter( ‘pre_link_description’, ‘wp_filter_kses’ );
    新しい発見でワクワクしました!今後の参考にさせていただきます。

    しかし、今回はそうなのです、実際の表示で改行がしたいのです。
    なるほど、descriptionは説明だけの用途ではないのですね。

    う~ん…

    popup

    (@popup)

    次の記事はカテゴリーの例ですが、リンクの説明の場合も同じようにしてフィルターを解除することが出来ます。
    http://kihon-no-ki.com/wordpress-category-description
     
    リンクの説明のフィルターフックはpre_link_descriptionです。

    remove_filter( 'pre_link_description', 'wp_filter_kses' );

    プラグイン API/フィルターフック一覧 – Codex 日本語版
     
    特定のHTMLタグだけを許可する場合は、次の記事を参考にして、pre_link_descriptionにフックした関数でwp_kses()を利用し、不要なHTMLタグを除いた文字列を返すようにするといいです。
    http://www.mee77.com/2011/09/614/
    http://code1616.net/wordpress/entry-22.html
     
    関数リファレンス/add filter – Codex 日本語版

    フォーラム: 使い方全般
    返信が含まれるトピック: 個人設定画面に追加したtextareaの改行について
    トピック投稿者 mashico

    (@mashico)

    redcocker様

    ご教授いただいたものに少し手を加えたら出来ました!
    最終的なコードは以下になりました。

    function update_user_essay( $user_id, $old_user_data ) {
        if ( isset( $_POST['user_essay'] ) && $old_user_data->user_essay != $_POST['user_essay'] ) {
            $user_essay = wp_filter_kses( $_POST['user_essay'] );
            update_user_meta( $user_id, 'user_essay', $user_essay );
        }
    }
    add_action( 'profile_update', 'update_user_essay', 10, 2 );

    これにて、解決済みとさせていただきます。

    フォーラム: 使い方全般
    返信が含まれるトピック: 個人設定画面に追加したtextareaの改行について

    こんにちは

    多分、フィルターの当て方が悪いのでしょう。
    つまり、以下の処理です。

    $user_essay = sanitize_text_field( $_POST['user_essay'] );
            $user_essay = wp_filter_kses( $user_essay );
            $user_essay = _wp_specialchars( $user_essay );

    デフォルトでも「プロフィール情報」というテキストエリア項目がありますが、この項目には、wp_filter_ksesしか当たっていないので、(少なくともprofile_updateのタイミングでは)同様にwp_filter_ksesだけでOKではないでしょうか。

    ただし、表示の際にタグなどを無力化するフィルターがないと痛いことなるかもしれませんが。

    wp-includes/user.phpのwp_insert_user($userdata)関数とwp-includes/default-filters.phpが参考になると思います。

    フォーラム: 使い方全般
    返信が含まれるトピック: カスタムフィールドtoテーブル

    ※wp_specialcharsが関係しているのでしょうか?

    その通りです。 wp_specialchars() を通すと、 HTML で使用するいくつかの記号文字がすべて実体参照または数値文字参照へ変換されます。 (< が &lt; など)
    もし shirochaushi さんだけが投稿を作成する、または信頼できるユーザーのみが投稿を作成する場合など、悪意あるコードが挿入される危険性がないのであれば、 HTML タグをそのまま出力しても問題はないと思いますので、その行は削除しても構いません。

    ちなみに WordPress の投稿で許可されているタグ以外を除去したい場合は、件の行を

    $value = wp_filter_post_kses( $value );

    に置き換えてみてもいいかもしれません。例えば table 要素の中にあってはまずい、 <html></html><body></body> がカスタムフィールドの値に入力されていても、そのタグを除去してくれます。

    一方、 a 要素などコメントでも許可されている主なインライン要素のみを許可するだけでよい場合は

    $value = wp_filter_kses( $value );

    を更にその代わりとして使用した方がいいと思います。より都合のよい方を選んでください。

    許可されているタグについては、これらの関数が定義されている /wp-includes/kses.php にて、許可タグと使用できる属性が配列で定義されています ($allowedposttags が前者、 $allowedtags が後者) ので、気になればそちらもチェックしてみてください。

    # 最善の方法が分かりませんので、より適切な方法があればどなたかご指摘ください。

    フォーラム: テーマ
    返信が含まれるトピック: プロフィールの経歴を改行したい

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

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

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

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

    フォーラム: テーマ
    返信が含まれるトピック: プロフィールの経歴を改行したい

    > 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 のみのようです。
    これは、購読者でも自分の経歴欄を編集することが出来るから? でしょうか? ともかくご報告まで

9件の結果を表示中 - 1 - 9件目 (全9件中)