Для фильтра $ object->

Я продолжаю видеть этот шаблон и задаюсь вопросом, для чего он используется, как 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, связанное с другими объектами. Хотите узнать, что он делает и как его можно использовать?

ИЗМЕНИТЬ

Я надеюсь получить больше информации об этом! К сожалению, поиск в Google с «фильтром» в нем вызывает только перехваты фильтра и т. Д. Это сложная задача, чтобы получить независимую информацию. Бюлер?

7 голосов | спросил Tom Auger 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 30 Sep 2011 00:09:35 +0400 2011, 00:09:35

2 ответа


4

Фильтр $ post-> содержит контекст, в котором содержимое сообщения было отфильтровано. Контекст может быть чем-то вроде «отображения», указывающего, что сообщение предназначено для отображения на странице.

Это делается с помощью функций санитарии, чтобы указать, в каком контексте были обработаны почтовые данные. Различные контексты получают различные виды санитарии. Например, «raw» - это несетевые данные. «display», вероятно, прошел через функцию esc_html или что-то еще для этого контекста. Функция sanitize_post () использует это для проверки ранее существовавших дезинфекций, чтобы предотвратить двойное экранирование и т. Д.

Еще одно использование фильтра $ post-gt в функции get_sample_permalink (). Вы обнаружите, что он устанавливает $post->filter = 'sample' перед вызовом get_permalink (). Использование «sample» здесь указывает на функцию get_permalink и на код ниже этого, что целью этого вызова является создание образца постоянной ссылки для отображения на экране редактирования сообщений. Это изменит способ работы некоторых из нижележащих функций.

ответил Otto 4 +04002011-10-04T21:01:22+04:00312011bEurope/MoscowTue, 04 Oct 2011 21:01:22 +0400 2011, 21:01:22
1

@Shaan: Я не думаю, что Том искал описание WP Plugin API. Он ищет описание свойства объекта filter, которое вы получаете в результате WP_Query. Например, если вы используете get_posts():

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

Я не знаю, используется ли это свойство внутри WordPress. Оглядываясь в исходном коде, я думаю, что это нигде не используется.

Просто размышляю здесь. Значение по умолчанию: raw для всех сообщений. Может быть, основные разработчики хотели добавить фильтрацию на каждую почтовую базу. Например, если вы хотите разрешить только определенные элементы HTML внутри постсообщения, вы можете создать фильтр sanitizeHtml, прикрепить его к сообщению и WordPress сделает все для вас.

ответил rofflox 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 30 Sep 2011 02:27:43 +0400 2011, 02:27:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132