The embed_cache_oembed_types WordPress PHP filter allows you to modify the array of post types for which oEmbed results will be cached.
Usage
add_filter('embed_cache_oembed_types', 'your_custom_function');
function your_custom_function($post_types) {
// your custom code here
return $post_types;
}
Parameters
- $post_types (string[]): An array of post type names to cache oEmbed results for. Defaults to post types with
show_uiset totrue.
More information
See WordPress Developer Resources: embed_cache_oembed_types
Examples
Adding a custom post type to the list
Modify the array to include a custom post type named ‘product’ to cache oEmbed results for.
add_filter('embed_cache_oembed_types', 'add_product_post_type');
function add_product_post_type($post_types) {
$post_types[] = 'product';
return $post_types;
}
Removing a specific post type from the list
Remove the ‘page’ post type from the list of post types caching oEmbed results.
add_filter('embed_cache_oembed_types', 'remove_page_post_type');
function remove_page_post_type($post_types) {
unset($post_types[array_search('page', $post_types)]);
return $post_types;
}
Only cache oEmbed results for ‘post’ and ‘custom_post_type’
Override the default behavior and cache oEmbed results only for ‘post’ and a custom post type named ‘custom_post_type’.
add_filter('embed_cache_oembed_types', 'cache_only_post_and_custom_post_type');
function cache_only_post_and_custom_post_type($post_types) {
return array('post', 'custom_post_type');
}
Disable oEmbed caching for all post types
Disable caching of oEmbed results for all post types by returning an empty array.
add_filter('embed_cache_oembed_types', 'disable_oembed_caching');
function disable_oembed_caching($post_types) {
return array();
}
Cache oEmbed results only for post types with a specific capability
Cache oEmbed results only for post types that have the ‘edit_posts’ capability.
add_filter('embed_cache_oembed_types', 'cache_post_types_with_edit_posts_capability');
function cache_post_types_with_edit_posts_capability($post_types) {
$allowed_post_types = array();
foreach ($post_types as $post_type) {
if (current_user_can('edit_posts', $post_type)) {
$allowed_post_types[] = $post_type;
}
}
return $allowed_post_types;
}