Wenden Sie pre_get_posts auf bestimmte benutzerdefinierte Post-Typen im Admin-Bereich an

Ich habe einige CPTs erstellt und möchte einen der benutzerdefinierten Beitragstypen von anderen Beitragstypen abfragen.

Also habe ich die folgenden Codes verwendet, um die Abfrage zu ändern:

add_filter('pre_get_posts', 'code_to_alter_query', 10); function code_to_alter_query($query) { // If not backend, bail out if( !is_admin() ) return $query; $cpts = array('custom_job', 'custom_us_job'); $query->set( 'post_type', $cpts ); return $query; } 

Jetzt werden Jobs von custom_job und custom_us_job . Aber das gilt für beide CPTs. Was ist, wenn ich möchte, dass nur custom_job beide Jobs hat, während custom_us_job die Standardabfrage hat?

Ich habe es versucht

 global $pagenow; 

Aber das kann nur die edit.php bekommen, die für alle CPTs gleich ist. Wie kann ich feststellen, auf welcher (Admin) Seite ich mich gerade befinde?

Solutions Collecting From Web of "Wenden Sie pre_get_posts auf bestimmte benutzerdefinierte Post-Typen im Admin-Bereich an"

Die get_current_screen() function ist get_current_screen() . Gehen Sie folgendermaßen vor, um zu überprüfen, ob Sie sich auf einer bestimmten benutzerdefinierten Post-Typ-Seite befinden:

 $screen = get_current_screen(); if ( $screen->post_type == 'custom_job' ) { // We are on custom_job post type, good to go } 

Wenn Sie nun edit.php?post_type=custom_job , gibt diese Bedingung den edit.php?post_type=custom_job true zurück, in dem Sie Ihre Abfrage festlegen können.

Es gibt auch einen anderen Ansatz dafür. Wenn Sie is_post_type_archive('custom_job') , können Sie die edit.php?post_type=custom_job . is_admin() Sie sicher, dass Sie dies in Verbindung mit is_admin() , um sicherzustellen, dass Sie nicht auf das Front-End is_admin() .