如何仅针对WordPress自定义文章类型job_listing修改已有永久链接别名长度
调整批量修改slug代码,仅针对job_listing自定义文章类型
原问题背景
现有代码可限制WordPress新文章(已适配job_listing类型)的slug为最多5个词,同时有批量修改已有文章slug的代码,但目前该批量代码仅处理默认文章类型,需要调整为只针对job_listing自定义文章类型。
修改后的CODE 2(仅处理job_listing类型已有文章)
function limit_all_existing_slugs(){ // 仅获取job_listing类型的所有文章 $posts = get_posts( array ( 'numberposts' => -1, 'post_type' => 'job_listing' // 新增:指定目标自定义文章类型 ) ); foreach ( $posts as $post ){ // 双重校验:确保当前文章是目标类型(可选,增强鲁棒性) if ( $post->post_type !== 'job_listing' ) { continue; } // 调用已有函数生成符合要求的新slug $new_slug = pm_trim_native_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent); // 仅当slug有变化时才执行更新 if ( $post->post_name != $new_slug ){ wp_update_post( array ( 'ID' => $post->ID, 'post_name' => $new_slug ) ); } } }
修改说明
- 核心调整:在
get_posts的参数中添加'post_type' => 'job_listing',直接限定查询范围为目标自定义文章类型,避免处理无关内容。 - 可选增强:循环内增加
post_type校验,即使查询参数出现异常,也能确保不会误修改其他类型的文章。
注意事项
- 执行批量修改前务必备份数据库,防止操作失误导致数据丢失或异常。
- 修改slug会改变文章永久链接,完成操作后建议设置301重定向,避免影响SEO和用户访问体验。
- 批量修改完成后,建议删除用于触发的CODE 3文件,防止后续误执行。
内容的提问来源于stack exchange,提问作者Orvitips
相关产品推荐
相关产品推荐

