强制 Wordpress 仅在特定自定义 post 类型上从标题生成 post slug
Force Wordpress to generate post slug from title only on specific custom post type
我使用下面的代码强制 WordPress 从 post 标题生成 post slug,即使用户定义了不同的 slug 或复制了另一个 slug 但我希望这只影响特定的 post 类型称为 job_listing 但不幸的是它影响了我网站上的所有 post 类型。
function myplugin_update_slug( $data, $postarr ) {
if ( ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$data['post_name'] = sanitize_title( $data['post_title'] );
}
return $data;
}
add_filter( 'wp_insert_post_data', 'myplugin_update_slug', 99, 2 );
如何使用上述代码仅针对名为 job_listing 的特定 post 类型而不影响其他 post 类型
有人可以帮我修改此代码以满足我的需要吗?
我们将不胜感激。
根据文档 $data
包含 post_type
所以你应该可以使用这个:
function myplugin_update_slug( $data, $postarr ) {
if ( $data['post_type'] === 'job_listing' && ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$data['post_name'] = sanitize_title( $data['post_title'] );
}
return $data;
}
add_filter( 'wp_insert_post_data', 'myplugin_update_slug', 99, 2 );
我使用下面的代码强制 WordPress 从 post 标题生成 post slug,即使用户定义了不同的 slug 或复制了另一个 slug 但我希望这只影响特定的 post 类型称为 job_listing 但不幸的是它影响了我网站上的所有 post 类型。
function myplugin_update_slug( $data, $postarr ) {
if ( ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$data['post_name'] = sanitize_title( $data['post_title'] );
}
return $data;
}
add_filter( 'wp_insert_post_data', 'myplugin_update_slug', 99, 2 );
如何使用上述代码仅针对名为 job_listing 的特定 post 类型而不影响其他 post 类型
有人可以帮我修改此代码以满足我的需要吗?
我们将不胜感激。
根据文档 $data
包含 post_type
所以你应该可以使用这个:
function myplugin_update_slug( $data, $postarr ) {
if ( $data['post_type'] === 'job_listing' && ! in_array( $data['post_status'], array( 'draft', 'pending', 'auto-draft' ) ) ) {
$data['post_name'] = sanitize_title( $data['post_title'] );
}
return $data;
}
add_filter( 'wp_insert_post_data', 'myplugin_update_slug', 99, 2 );