jmatwork
  • 0
Учитель

Какие параметры доступны для фильтра the_content?

  • 0

Я ищу, какие параметры передаются моей функции фильтра. Где я могу найти такую ​​информацию в кодексе?

http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content не предоставил много информации

Я хотел знать, является ли пост дочерним элементом другого

Share
  1. Я не думаю, что какие-либо дополнительные параметры передаются как таковые в, но доступны the_content глобальные переменные, такие как $post.

    Итак, что-то вроде этого будет работать:

    add_filter( 'the_content', 'check_for_post_parent' );
    
    function check_for_post_parent($content) {
         global $post;
         if ($parent_id == $post->post_parent) {
              //do what you want to $content here, 
              //now that you know $parent_id
              //...
              }
         return $content;
         }
    
    • 0
  2. В wp-includes/post-template.php вы найдете место, где применяются фильтры:

    /**
     * Display the post content.
     *
     * @since 0.71
     *
     * @param string $more_link_text Optional. Content for when there is more text.
     * @param string $stripteaser Optional. Teaser content before the more text.
     */
    function the_content($more_link_text = null, $stripteaser = 0) {
        $content = get_the_content($more_link_text, $stripteaser);
        $content = apply_filters('the_content', $content);
        $content = str_replace(']]>', ']]>', $content);
        echo $content;
    }
    

    Единственным параметром является текст содержимого.

    Но вы всегда можете использовать глобальную переменную $post, чтобы получить больше информации об используемом в данный момент посте. Попробуйте следующий фрагмент в файле functions.php вашей темы:

    /*
     * Priority 100 to let other filters do their work first.
     */
    add_filter( 'the_content', 'debug_post_info', 100 );
    /**
     * Print information about the current post.
     *
     * @param  string $content
     * @return string
     */
    function debug_post_info( $content )
    {
        return $content . '<hr><pre>' . var_export( $GLOBALS['post'], TRUE ) . '</pre>';
    }
    

    На дочерней странице вы получаете хорошие данные:

    stdClass::__set_state(array(
       'ID' => 2168,
       'post_author' => '2',
       'post_date' => '2007-09-04 09:52:18',
       'post_date_gmt' => '2007-09-03 23:52:18',
       'post_content' => 'This page has a parent.',
       'post_title' => 'Child page 2',
       'post_excerpt' => '',
       'post_status' => 'publish',
       'comment_status' => 'open',
       'ping_status' => 'open',
       'post_password' => '',
       'post_name' => 'child-page-2',
       'to_ping' => '',
       'pinged' => '',
       'post_modified' => '2007-09-04 09:52:18',
       'post_modified_gmt' => '2007-09-03 23:52:18',
       'post_content_filtered' => '',
       'post_parent' => 2167,
       'guid' => 'http://wpthemetestdata.wordpress.com/parent-page/child-page-1/child-page-2/',
       'menu_order' => 0,
       'post_type' => 'page',
       'post_mime_type' => '',
       'comment_count' => '0',
       'ancestors' => 
      array (
        0 => 2167,
        1 => 2166,
      ),
       'filter' => 'raw',
    ))
    

    'post_parent' => 2167 является идентификатором родительского сообщения. На страницах без родителя параметру присваивается значение 0 .

    • 0

Оставить ответ

You must login to add an answer.