web-dev-qa-db-ja.com

$ object-> filterとは何ですか?

私はこのパターンを見続けています、そしてそれが何のためにあるのか疑問に思います、WPはどのように内部的にそれを使っていますか:

if ( empty($post) ) {
        if ( isset($GLOBALS['post']) )
            $_post = & $GLOBALS['post'];
        else
            return $null;
    } elseif ( is_object($post) && empty($post->filter) ) {
        _get_post_ancestors($post);
        $_post = sanitize_post($post, 'raw');
        wp_cache_add($post->ID, $_post, 'posts');
    } else {
        if ( is_object($post) )
            $post_id = $post->ID;
        else
            $post_id = $post;

問題の特定の行はis_object($post) && empty($post->filter)です。このfilterプロパティは他のオブジェクトにも関連付けられています。それが何をしていて、それがどのように使われることができるか疑問に思いますか?

編集

私はこれについてもっと情報を得たいと思っています!残念ながら、「filter」を含むGoogle検索では、Filterフックなどしか表示されません。これは、独立した情報を得るのには難しいものです。ビューラー?

7
Tom Auger

$ post-> filterは投稿の内容がフィルタされたコンテキストを含みます。コンテキストは投稿がページに表示されることを意味していることを示す "display"のようなものです。

これはサニタイズ機能によって行われ、投稿データがどのコンテキストでサニタイズされたかを示します。コンテキストが異なれば、消毒の種類も異なります。たとえば、「raw」はサニタイズされていないデータです。 "display"はおそらくesc_html関数を通過したか、あるいはその文脈に関連するものは何でもした。 sanitize_post()関数はこれを使用して、二重のエスケープなどを防ぐために、既存のサニタイズをチェックします。

$ post-> filterのもう一つの用途はget_sample_permalink()関数です。 get_permalink()を呼び出す前に、$post->filter = 'sample'が設定されていることがわかります。ここでの "sample"の使用はget_permalink関数とその下のコードを示します。この呼び出しの目的は投稿編集画面に表示するためのサンプルパーマリンクを作成することです。これにより、その下のいくつかの機能の動作方法が変わります。

5
Otto

@ Shan:TomがWP Plugin APIについての説明を探していたとは思いません。彼はWP_Queryの結果として得られるオブジェクトプロパティfilterの記述を探しています。例えばget_posts()を使うと

stdClass Object
(
    // other post properties
    [filter] => raw
)

私はこのプロパティがWordPressの中で使われているかどうか、そしてどこで使われているのかわかりません。ソースコードを見てみると、現時点ではこれは使用されていません。

ここを推測しているだけです。これまでのすべての投稿で、デフォルト値はrawです。コア開発者が投稿ベースごとにフィルタリングを追加したいと考えている可能性があります。たとえば、投稿コンテンツ内の特定のHTML要素のみを許可したい場合は、フィルタsanitizeHtmlを作成して投稿に添付すると、残りはWordPressによって自動的に行われます。

1
rofflox