Here are three possibilities, based on the /wp-admin/admin.php
file:
Method #1
There are the global $pagenow
and $typenow
available:
global $pagenow, $typenow;
if( 'my_venue' === $typenow && 'edit.php' === $pagenow )
{
// ...
}
Method #2
Then there’s the current screen, also set in the admin.php
file with set_current_screen()
;
$screen = get_current_screen();
if( is_a( $screen, '\WP_Screen') && 'edit-myvenue' === $screen->id );
{
// ...
}
where we use the id
property of the \WP_Screen
object.
If we skim through the \WP_Screen
class, we find the current_screen
hook, that might be used instead:
add_action( 'current_screen', function( \WP_Screen $s )
{
if( 'edit-myvenue' === $s->id )
{
// ...
}
} );
Method #3
Then there’s the load-edit.php
hook, that’s available prior to the pre_get_posts
hook:
add_action( 'load-edit.php', function()
{
// Check for the post type here.
} );
In this case, the general hook is load-$pagenow
. No need for the is_admin()
check here.
Note
If you’re targetting the main query, then you should add $query->is_main_query()
check as well within your pre_get_posts
callback.
Also remember to validate the $_GET['my_venue_ids']
part, it might not even exist in the $_GET
array.
Nothing new here! I think we’ve all seen these methods, in one way or another, used in many questions & answers here on WPSE 😉