Wie leite ich alle 404 Fehler eines bestimmten Post-Typs auf eine andere URL um?

Ich habe einen benutzerdefinierten Post-Typ mit Job-Listings, der sehr unbeständig ist. Jobs werden häufig hinzugefügt und entfernt. Unsere Analysen zeigen, dass viele Crawling-Fehler für Detailseiten von Jobs bestehen, die nicht aufgelistet wurden.

Die Lösung, die ich gefunden habe, besteht darin, alle Besuche für nicht existierende URLs innerhalb des CPT-Slugs auf die Job-Listing-Übersicht umzuleiten, und ich möchte dies automatisieren.

Wie würde ich darüber gehen? Ich suche nach einer Lösung, die das sehr früh macht und so viele unnötige Anrufe wie möglich überspringt. (also etwas früher als das in der header.php, idealerweise als action)

Beispiel:

  • mydomain.com/jobs/existingjob/ liefert die mydomain.com/jobs/existingjob/ für den Job
  • mydomain.com/jobs/nojobhere/ existiert nicht und würde einen 404 casting, sondern wird stattdessen zu mydomain.com/jobs/ umgeleitet

Solutions Collecting From Web of "Wie leite ich alle 404 Fehler eines bestimmten Post-Typs auf eine andere URL um?"

Es sieht so aus, als wäre template_redirect so weit oben in der WordPress-Aktionskette, dass man gehen kann, während man immer noch erkennen kann, dass ein 404-Fehler ausgetriggers wird. Diese Aktion wird ausgetriggers, bevor Vorlagendateien geladen werden. Dies geschieht vor dem Laden unnötiger Ressourcen.

Sie können versuchen, dies in Ihre /wp-content/themes/yourtheme/functions.php -Datei /wp-content/themes/yourtheme/functions.php , um eine dynamische Umleitung für alle /wp-content/themes/yourtheme/functions.php zu erreichen, die beim Anzeigen einzelner Jobs auftreten:

 add_action( 'template_redirect', 'unlisted_jobs_redirect' ); function unlisted_jobs_redirect() { // check if is a 404 error, and it's on your jobs custom post type if( is_404() && is_singular('your-job-custom-post-type') ) { // then redirect to yourdomain.com/jobs/ wp_redirect( home_url( '/jobs/' ) ); exit(); } } 
 If there is no page on your site with that post type, you need to ask yourself the question: should I really be deleting that page? Or should I just make it better? If you decide to delete it nonetheless, make sure you send the proper HTTP header: a 410 content deleted header. **404 and 410 HTTP headers** The difference between a 404 and a 410 header is simple: 404 means “content not found”, 410 means “content deleted” and is thus more specific. If a URL returns a 410, Google is far more certain you removed the URL on purpose and it should thus remove that URL from its index. This means it will do so much quicker. You can use Yoast SEO Premium plugin, the redirects module in this plugin is capable of serving 410 headers.