You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在WordPress中创建类Strapi Entries的自定义实体?已确认是Custom Post Type

解决方案指引

核心思路:自定义文章类型 + REST API 适配

你提到的Strapi里的Entries概念,对应WordPress里的自定义文章类型(Custom Post Type),完全可以实现你的需求,具体步骤如下:

1. 创建职位招聘的自定义文章类型

在WordPress主题的functions.php文件中添加代码,注册专属的自定义文章类型:

function create_job_post_type() {
  register_post_type( 'job',
    array(
      'labels' => array(
        'name' => __( '职位招聘' ),
        'singular_name' => __( '职位' )
      ),
      'public' => true,
      'has_archive' => true,
      'supports' => array( 'title', 'editor' ), // 对应你需要的title和description字段
      'show_in_rest' => true, // 关键配置:让该类型支持REST API
      'rest_base' => 'jobs', // 自定义API端点名称,最终路径类似 /wp-json/wp/v2/jobs
    )
  );
}
add_action( 'init', 'create_job_post_type' );

执行这段代码后,WordPress后台会新增「职位招聘」的内容管理入口,同时自动生成对应的REST API端点。

2. 迁移现有职位数据

把原来嵌入在页面HTML块里的职位信息,逐个迁移到新建的「职位」自定义文章中:

  • 文章标题栏填写职位名称(对应你需要的title字段)
  • 编辑器中填写职位详细描述(对应你需要的description字段)

3. 获取格式化的API数据

完成迁移后,直接访问/wp-json/wp/v2/jobs就能拿到符合需求的数据结构,返回的每条数据里:

  • title.rendered 对应目标格式的title字符串
  • content.rendered 对应目标格式的description字符串

如果需要更精简的响应结构,可以通过钩子过滤API返回内容,示例代码:

function filter_job_rest_response( $response, $post, $request ) {
  $data = $response->get_data();
  $simplified_data = array(
    'title' => $data['title']['rendered'],
    'description' => $data['content']['rendered']
  );
  $response->set_data( $simplified_data );
  return $response;
}
add_filter( 'rest_prepare_job', 'filter_job_rest_response', 10, 3 );

替代方案:自定义REST端点(无需迁移数据)

如果暂时不想迁移现有页面的职位数据,可以直接创建自定义REST端点,提取页面中的HTML块内容:

function get_jobs_from_pages() {
  // 查询包含职位信息的目标页面(可通过页面ID、分类或自定义字段筛选)
  $pages = get_posts( array(
    'post_type' => 'page',
    'post__in' => array( 123, 456 ), // 替换为你的目标页面ID
  ) );
  
  $jobs = array();
  foreach ( $pages as $page ) {
    // 根据你页面中HTML块的实际结构,提取标题和描述
    // 示例:假设职位标题是h2标签,描述是紧跟的div容器
    $dom = new DOMDocument();
    @$dom->loadHTML( $page->post_content );
    
    $title = $dom->getElementsByTagName('h2')->item(0)->nodeValue;
    $description = $dom->getElementsByTagName('div')->item(0)->nodeValue;
    
    $jobs[] = array(
      'title' => $title,
      'description' => $description
    );
  }
  
  return rest_ensure_response( $jobs );
}

add_action( 'rest_api_init', function () {
  register_rest_route( 'custom/v1', '/jobs', array(
    'methods' => 'GET',
    'callback' => 'get_jobs_from_pages',
  ) );
} );

访问/wp-json/custom/v1/jobs即可获取提取后的职位数据,注意需要根据你页面的实际HTML结构调整提取逻辑。


内容的提问来源于stack exchange,提问作者Volubyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:10:26