The get_object_subtype_{$object_type} WordPress PHP filter allows you to modify the object subtype identifier for non-standard object types.
Usage
add_filter('get_object_subtype_post', 'your_custom_function', 10, 2);
function your_custom_function($object_subtype, $object_id) {
// Your custom code here
return $object_subtype;
}
Parameters
- $object_subtype: string – Empty string to override.
- $object_id: int – ID of the object to get the subtype for.
More information
See WordPress Developer Resources: get_object_subtype_{$object_type}
Examples
Change subtype for a custom post type
In this example, the object subtype for a custom post type called ‘product’ will be changed to ‘custom_product_subtype’.
add_filter('get_object_subtype_post', 'change_product_subtype', 10, 2);
function change_product_subtype($object_subtype, $object_id) {
if (get_post_type($object_id) == 'product') {
$object_subtype = 'custom_product_subtype';
}
return $object_subtype;
}
Change user subtype based on user role
This example modifies the user subtype based on the user’s role.
add_filter('get_object_subtype_user', 'change_user_subtype_based_on_role', 10, 2);
function change_user_subtype_based_on_role($object_subtype, $object_id) {
$user = get_user_by('ID', $object_id);
if (in_array('administrator', $user->roles)) {
$object_subtype = 'admin_subtype';
} elseif (in_array('editor', $user->roles)) {
$object_subtype = 'editor_subtype';
}
return $object_subtype;
}
Change term subtype for a specific taxonomy
This example changes the term subtype for a custom taxonomy called ‘location’.
add_filter('get_object_subtype_term', 'change_location_subtype', 10, 2);
function change_location_subtype($object_subtype, $object_id) {
$term = get_term($object_id);
if ($term->taxonomy == 'location') {
$object_subtype = 'custom_location_subtype';
}
return $object_subtype;
}
Change comment subtype based on comment type
This example modifies the comment subtype based on the comment type.
add_filter('get_object_subtype_comment', 'change_comment_subtype_based_on_type', 10, 2);
function change_comment_subtype_based_on_type($object_subtype, $object_id) {
$comment = get_comment($object_id);
if ($comment->comment_type == 'review') {
$object_subtype = 'review_subtype';
}
return $object_subtype;
}
Add a custom prefix to post subtypes
In this example, a custom prefix ‘my_prefix_’ is added to all post subtypes.
add_filter('get_object_subtype_post', 'add_prefix_to_post_subtype', 10, 2);
function add_prefix_to_post_subtype($object_subtype, $object_id) {
$object_subtype = 'my_prefix_' . $object_subtype;
return $object_subtype;
}