A member site I manage has a significant amount of protected content that has a private post status and is made available to members of a specific role via use of the capability read_private_posts. I often want to link to these posts but am unable to easily do so because of the following:
The Limitation
A search of existing content within the Insert/edit link modal returns only published posts.
The Solution
// Add private posts to the queried post status argument function uamv_link_query_private( $query ) { $query['post_status'] = array( 'publish', 'private' ); return $query; } add_filter( 'wp_link_query_args', 'uamv_link_query_private', 10, 1 ); // Prepend displayed post type with 'Private: ' function uamv_link_query_private_prepend( $results, $query ) { foreach ( $results as $key => $result ) { if ( 'private' == get_post_status( $result['ID'] ) ) { $results[ $key ]['info'] = 'Private: ' . $results[ $key ]['info']; } } return $results; } add_filter('wp_link_query', 'uamv_link_query_private_prepend', 10, 2 );
The wp_link_query_args
filter gives control over any arguments passed to the WP_Query class.
The wp_link_query
gives control over the following returned results prior to display:
$results = array( 'ID', 'title', 'permalink', 'info' );