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

WordPress多自定义文章类型下,如何匹配展示共享Skills分类的重合技能?

实现WordPress招聘网站技能匹配展示

核心逻辑很简单:利用PHP的array_intersect()函数,对比两类文章的Skills分类ID数组,找出重合项后渲染展示即可。以下是两个页面的具体实现:

在job-single.php(求职者视角)展示匹配技能

假设你已经能获取当前职位的Skills分类ID,这里需要额外获取当前登录求职者的简历Skills,再计算交集:

// 获取当前职位的技能ID数组(替换成你已有的获取逻辑也可)
$job_skill_ids = wp_get_post_terms(get_the_ID(), 'skills', array('fields' => 'ids'));

// 获取当前登录用户的简历(假设单用户对应单简历,多简历场景需调整查询逻辑)
$current_user_id = get_current_user_id();
$resume_query = new WP_Query([
    'post_type' => 'resumes',
    'author' => $current_user_id,
    'posts_per_page' => 1,
    'no_found_rows' => true, // 优化查询性能
]);

if ($resume_query->have_posts()) {
    $resume_query->the_post();
    $resume_skill_ids = wp_get_post_terms(get_the_ID(), 'skills', array('fields' => 'ids'));
    wp_reset_postdata();

    // 计算重合技能ID
    $matching_skill_ids = array_intersect($job_skill_ids, $resume_skill_ids);

    if (!empty($matching_skill_ids)) {
        // 获取重合技能的名称并渲染
        $matching_skills = wp_get_post_terms($matching_skill_ids, 'skills', array('fields' => 'names'));
        ?>
        <div class="skill-match-tip">
            <h3>你的匹配技能</h3>
            <ul class="skill-list">
                <?php foreach ($matching_skills as $skill) : ?>
                    <li><?php echo esc_html($skill); ?></li>
                <?php endforeach; ?>
            </ul>
        </div>
        <?php
    } else {
        echo '<div class="skill-match-tip">暂无匹配技能,建议更新简历技能标签</div>';
    }
}

在job-application-single.php(雇主视角)展示匹配技能

这里需要先获取当前申请关联的职位ID和简历ID,再分别拉取两者的Skills分类信息:

// 获取当前申请的ID
$application_id = get_the_ID();

// 从自定义字段中取出关联的职位ID和简历ID(替换成你实际的字段键名)
$related_job_id = get_post_meta($application_id, '_related_job_id', true);
$related_resume_id = get_post_meta($application_id, '_related_resume_id', true);

if ($related_job_id && $related_resume_id) {
    // 获取职位的技能ID数组
    $job_skill_ids = wp_get_post_terms($related_job_id, 'skills', array('fields' => 'ids'));
    // 获取简历的技能ID数组
    $resume_skill_ids = wp_get_post_terms($related_resume_id, 'skills', array('fields' => 'ids'));

    // 计算重合技能ID
    $matching_skill_ids = array_intersect($job_skill_ids, $resume_skill_ids);

    if (!empty($matching_skill_ids)) {
        $matching_skills = wp_get_post_terms($matching_skill_ids, 'skills', array('fields' => 'names'));
        ?>
        <div class="application-skill-match">
            <h3>技能匹配情况</h3>
            <p>该求职者与职位匹配的技能:</p>
            <ul class="skill-tags">
                <?php foreach ($matching_skills as $skill) : ?>
                    <li><?php echo esc_html($skill); ?></li>
                <?php endforeach; ?>
            </ul>
            <!-- 可选:展示匹配率 -->
            <?php
            $total_job_skills = count($job_skill_ids);
            $match_percentage = $total_job_skills > 0 ? round((count($matching_skill_ids) / $total_job_skills) * 100, 1) : 0;
            ?>
            <p>技能匹配率:<?php echo $match_percentage; ?>%</p>
        </div>
        <?php
    } else {
        echo '<div class="application-skill-match">该求职者与当前职位无匹配技能</div>';
    }
}

注意事项

  • 确保自定义分类法的slug是skills,如果你的slug不同,替换代码中对应的参数。
  • 自定义字段键名(如_related_job_id)需与你实际存储关联关系的字段一致。
  • 所有输出内容用esc_html()转义,避免XSS安全风险。
  • 多简历场景下,job-single.php中需添加简历选择逻辑,让用户指定用来匹配的简历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:35:17