如何将数据添加到可由WP REST API检索的帖子

时间:2015-05-07 作者:OJay

我用过Custom Field Suite 将字段添加到所有WordPress帖子中,但通过WP Rest API 使用/posts 在独立站点上。

是否有方法添加CFS数据,以便通过wp json/posts REST调用检索?感觉我只需要在正确的位置打一个CFS()->get调用。或者仅仅是一种向帖子添加数据的基本方法,以便在REST调用中可以检索这些帖子?

我为添加了github问题CFSWP-API, 还有一个将军Stack Overflow question 但任何帮助或指导都将不胜感激。谢谢

1 个回复
SO网友:bueltge

WP-API有钩子,比如

rest_prepare_page
以增强端点。对于每种帖子类型,给它不同的挂钩,下面的代码示例将标签添加到帖子和页面,并说明它是如何工作的。

 /** 
   * Add properties to posts and pages endpoints.
   */function wp_api_theming_posts_properties( $response ) {    

    // Set author\'s name.   
    $author = get_userdata( $response->data[\'author\'] );
    $response->data[\'author\'] = array(      \'id\' => $author->ID,        \'link\' => get_author_posts_url( $author->ID ),      \'name\' => $author->data->display_name,  );  

     // Add post classes.
        $response->data[\'post_class\'] = get_post_class( \'\', $response->data[\'id\'] ); 

    // Add categories.  
   $categories = wp_api_theming_get_post_terms( $response->data[\'id\'], \'category\' );

    if ( ! empty( $categories ) ) { 
        $response->data[\'categories\'] = $categories;
    } 

    // Add tags.    $tags = wp_api_theming_get_post_terms( $response->data, \'post_tag\' );

    if ( ! empty( $tags ) ) {   
        $response->data[\'tags\'] = $tags;    }   return $response;
   }

add_filter( \'rest_prepare_post\', \'wp_api_theming_posts_properties\' );

add_filter( \'rest_prepare_page\', \'wp_api_theming_posts_properties\' );  

/** * Get a post\'s terms with archive links. */
function wp_api_theming_get_post_terms( $id = false, $taxonomy = \'category\' ) {

   // We need an ID for this one.
  if ( ! $id ) {        
      return FALSE; 
  }     

  // Validate the taxonomy argument.      
  $valid_tax = apply_filters( \'wp_api_theming_valid_tax\', array( \'category\', \'post_tag\' ) );

  $taxonomy = ( in_array( $taxonomy, $valid_tax ) ) ? $taxonomy : \'category\';   
  // Fetch our terms.   
 $terms = wp_get_post_terms( absint( $id ), $taxonomy );    

    if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) {
       // Append a link property to each term.
        foreach ( $terms as $term ) {
               $link = get_term_link( $term );
               $term->link = $link;     
        }   
    }   

 return $terms;
}
另请参阅我的小插件,以减少不同点的API结果。我认为了解如何改变、提高结果和终点也很有帮助。https://github.com/bueltge/WP-REST-API-Filter-Items

结束

相关推荐

Finding the next 5 posts

我的单曲。我想运行一个查询,在那里我可以捕获接下来的5篇文章(按时间顺序)。我知道怎么做,除了找出一种方法来指定5个特定的帖子是在我当前帖子之后创建的帖子。使用上一个_post_link();和next\\u post\\u link();在这里不相关,因为我需要它们是特定类别的。