The oembed_request_post_id WordPress PHP filter allows you to modify the determined post ID used in an oEmbed request.
Usage
add_filter('oembed_request_post_id', 'your_custom_function', 10, 2);
function your_custom_function($post_id, $url) {
// your custom code here
return $post_id;
}
Parameters
$post_id(int) – The determined post ID.$url(string) – The requested URL.
More information
See WordPress Developer Resources: oembed_request_post_id
Examples
Change post ID based on the requested URL
Modify the post ID if the requested URL contains a specific query string.
add_filter('oembed_request_post_id', 'change_post_id_based_on_url', 10, 2);
function change_post_id_based_on_url($post_id, $url) {
if (strpos($url, 'custom_query=example') !== false) {
$post_id = 123;
}
return $post_id;
}
Return a custom post ID for a specific URL pattern
Set a custom post ID for any URL that matches a specific pattern.
add_filter('oembed_request_post_id', 'custom_post_id_for_url_pattern', 10, 2);
function custom_post_id_for_url_pattern($post_id, $url) {
if (preg_match('/example-domain\.com\/custom-path\/(\d+)/', $url, $matches)) {
$post_id = (int)$matches[1];
}
return $post_id;
}
Disable oEmbed for specific post IDs
Prevent oEmbed requests for specific post IDs by returning false.
add_filter('oembed_request_post_id', 'disable_oembed_for_specific_ids', 10, 2);
function disable_oembed_for_specific_ids($post_id, $url) {
$disabled_ids = array(12, 34, 56);
if (in_array($post_id, $disabled_ids)) {
return false;
}
return $post_id;
}
Modify post ID based on a custom meta value
Change the post ID for oEmbed requests based on a custom meta value.
add_filter('oembed_request_post_id', 'modify_post_id_based_on_meta', 10, 2);
function modify_post_id_based_on_meta($post_id, $url) {
$custom_meta_value = get_post_meta($post_id, 'your_custom_meta_key', true);
if ($custom_meta_value) {
$post_id = (int)$custom_meta_value;
}
return $post_id;
}
Swap post ID with its parent ID
Replace the post ID with its parent post ID for oEmbed requests.
add_filter('oembed_request_post_id', 'swap_with_parent_post_id', 10, 2);
function swap_with_parent_post_id($post_id, $url) {
$parent_id = wp_get_post_parent_id($post_id);
if ($parent_id) {
$post_id = $parent_id;
}
return $post_id;
}