WordPress Job Manager插件提交申请后获取职位分类失败排查
解决Job Manager插件中获取职位分类为空的问题
问题原因
WordPress的get_the_category()函数仅适用于默认文章分类(category),而Job Manager插件的职位属于自定义文章类型,它的分类是插件自定义的分类法(并非默认分类),因此用这个函数无法获取到分类数据,返回空数组。
解决方案
确认职位对应的自定义分类法名称
- 可以通过后台“职位分类”页面的URL查看,比如URL中包含
taxonomy=job_listing_category,则分类法名称为job_listing_category(这是Job Manager的默认分类法名称); - 也可以临时在代码中添加
var_dump(get_object_taxonomies('job_listing'));,打印出职位自定义文章类型的所有分类法,确认准确名称。
- 可以通过后台“职位分类”页面的URL查看,比如URL中包含
替换为自定义分类法的获取函数
使用get_the_terms()函数,该函数支持自定义分类法,语法为get_the_terms( $post_id, $taxonomy )。
修正后的代码
add_action( 'new_job_application', function( $application_id, $job_id ) { // 替换为Job Manager职位对应的自定义分类法,默认是job_listing_category $taxonomy = 'job_listing_category'; $category_detail = get_the_terms( $job_id, $taxonomy ); // 先判断分类数据是否存在且无错误 if ( ! empty( $category_detail ) && ! is_wp_error( $category_detail ) ) { foreach( $category_detail as $cd ){ if( $cd->name == 'INTERNAL EMPLOYMENT' ){ $message = "Well done!\n"; $message .= "INTERNAL EMPLOYMENT"; wp_mail('gaderex376@barakal.com', "Testing Email test INTERNAL EMPLOYMENT", $message); } } } }, 999, 2 );
额外注意
- 若
job_listing_category不是插件实际使用的分类法,务必替换为步骤1中确认的正确名称; - 添加
! is_wp_error( $category_detail )判断,避免分类获取出错时触发循环报错。
内容的提问来源于stack exchange,提问作者Tsukimoto Mitsumasa
相关产品推荐
相关产品推荐

