The "wp_link_query_args" filter is used to filter the array of arguments passed to the wp_link_query
function which is responsible for building the list of linkable content in the modal window that displays when you insert a link. wp_link_query_args
allows you to alter the query before the list is rendered on the page.
Any allowable WP_Query parameters can be passed to wp_link_query_args
. One example is filtering out post types:
If you wanted only allow posts and pages to show up in the linked results, you could do something like this. In this example, we're going to check to make sure we aren't in the admin, so results would only be filtered on the front end, but admins could still add links to all post types.
function my_wp_link_query_args( $query ) { // check to make sure we are not in the admin if ( !is_admin() ) { $query['post_type'] = array( 'post', 'pages' ); // show only posts and pages } return $query; } add_filter( 'wp_link_query_args', 'my_wp_link_query_args' );
You'd use something like this if you only wanted to remove specific post types from the results.
function remove_these_post_types_from_wp_link_query_args( $query ) { // this is the post type I want to exclude $cpt_to_remove = 'article'; // find the corresponding array key $key = array_search( $cpt_to_remove, $query['post_type'] ); // remove the array item if( $key ) unset( $query['post_type'][$key] ); return $query; } add_filter( 'wp_link_query_args', 'remove_these_post_types_from_wp_link_query_args' );
The wp_link_query_args
filter is located in wp-includes/class-wp-editor.php
.