Verwenden eines benutzerdefinierten Post-Typs nur für einen RSS-Feed

Ich habe eine Anfrage von einem Kunden bekommen, die mir Kopfschmerzen bereitet! Sie möchten einen RSS-Feed, der Inhalte anzeigt, die nirgendwo auf der Website enthalten sind.

Ich habe einen neuen benutzerdefinierten Post-Typ registriert (abgespeckter Code);

$alert_args = array( 'public' => false, 'show_ui' => true, 'label' => 'Alerts', 'has_archive' => true, 'supports' => array( 'title', 'editor' ), ); register_post_type( 'alerts', $alert_args ); 

Damit der RSS-Feed funktioniert, muss das public Argument auf TRUE gesetzt sein, aber ich möchte nicht, dass diese Beiträge von Google indexiert oder von Website-Besuchern verwendet werden. Irgendeine Idee, wie ich den RSS-Feed für sich arbeiten lassen kann?

Danke, Dan.

—BEARBEITEN—

Bitte beachten Sie, dass ich am Ende die Änderung get_post_type() zu get_query_var( 'post_type' ) weil die get_query_var( 'post_type' ) nicht mit get_query_var( 'post_type' ) funktioniert. Siehe Code;

 if( 'alerts' === get_query_var( 'post_type' ) && ! is_feed() ) { $GLOBALS[ 'wp_query' ]->set_404(); status_header( 404 ); nocache_headers(); } 

Solutions Collecting From Web of "Verwenden eines benutzerdefinierten Post-Typs nur für einen RSS-Feed"

Sie könnten versuchen, einen 404 mit dieser Methode zu erzwingen:

 /** * Force 404 on all "alerts" custom post type pages except for the feed * * @see https://wordpress.stackexchange.com/a/162303/26350 */ add_action( 'template_redirect', function() { if( 'alerts' === get_post_type() && ! is_feed() ) { $GLOBALS['wp_query']->set_404(); status_header( 404 ); nocache_headers(); } } ); 

mit folgendem Setup:

 $alert_args = array( 'public' => true, 'show_ui' => true, 'has_archive' => true, 'exclude_from_search' => true, 'label' => 'Alerts', 'supports' => array( 'title', 'editor' ), ); register_post_type( 'alerts', $alert_args ); 

Nur Zugriff auf den Feed für den benutzerdefinierten alerts zulassen

Vielleicht möchten Sie auch ein Extra hinzufügen ! is_user_logged_in() ! is_user_logged_in() check, wenn Sie angemeldeten Benutzern erlauben möchten, die Alerts zu sehen oder ! current_user_can( 'some_capability' ) ! current_user_can( 'some_capability' ) für einige Benutzerfähigkeitsanforderungen.