Umleiten an URL, wenn x Anzahl der Tage vergangen ist

Nehmen wir an, ich habe diese URL: www.example.com/myCPT/post , hier möchte ich prüfen, ob 3 Tage vergangen sind, seit der Beitrag erstellt wurde, um auf www.example.com/myCPT/post/stats umzuleiten.

In diesem Zeitraum von 3 Tagen sollte der Benutzer nicht auf www.example.com/myCPT/post/stats zugreifen können.

Aber das muss dynamisch sein, jedes Mal, wenn ein Post erstellt wird, um nach seiner URL zu suchen und eine 3-tägige Zeit hinzuzufügen, bis diese URL zugänglich sein wird www.example.com/myCPT/post/stats

Zum Beispiel werde ich Post1, Post2, Post3 und so weiter haben und jedes Mal, wenn der Post erstellt wird, um einen Zeitraum von 3 Tagen hinzuzufügen, bis die “/ post / stats” verfügbar sein wird.

Auch ich brauche das gleiche für “/ post / comments” : diese Adresse sollte nach 3 Tagen verfügbar sein, und wenn jemand versucht, vorher zuzugreifen, sollte umgeleitet werden, um URL zu schreiben: “/ post”

Ich habe etwas recherchiert und Folgendes gefunden:

  • wp_redirect( $location, $status ); zur Umleitung
  • und um das Datum / die Uhrzeit des Posts zu erhalten

Einen Ausschnitt gefunden, der hilfreich sein könnte:

 if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 30 * 24 * 60 * 60 ) ) { // DO SOMETHING } return $posts; } 

Später Bearbeiten:

Die Endpunkte "/stats" und "/comments" sind wie folgt aufgebaut:

 function wpa121567_rewrite_endpoints(){ add_rewrite_endpoint( 'stats', EP_PERMALINK ); } add_action( 'init', 'wpa121567_rewrite_endpoints' ); 

Irgendwelche Vorschläge, wie ich das erreichen kann?

Solutions Collecting From Web of "Umleiten an URL, wenn x Anzahl der Tage vergangen ist"

Um nach 3 Tagen nach der Veröffentlichung umzuleiten, haken Sie sich in template_redirect , prüfen Sie, ob es sich um eine singuläre CPT-Ansicht handelt, überprüfen Sie das Datum und vergleichen Sie sie mit der aktuellen Zeit und leiten Sie sie ggf. um.

Überprüfen Sie in den 3 Tagen, ob die Statistik die Abfrage ist und wenn dies der Fall ist, leiten Sie die Seite weiter.

 add_action('template_redirect', 'check_the_date_for_stats'); function check_the_date_for_stats() { if ( is_singular('myCPT ') ) { // adjust myCPT with your real cpt name $pl = get_permalink( get_queried_object() ); // permalink $is_stats = array_key_exists( 'stats', $GLOBALS['wp_query']->query ); // is stats? $is_cm = array_key_exists( 'comments', $GLOBALS['wp_query']->query ); // is comments? $ts = mysql2date('Ymd', get_queried_object()->post_date_gmt ); // post day $gone = ($ts + 3) < gmdate('Ymd'); // more than 3 days gone? if ( $gone && ( ! $is_stats && ! $is_cm ) ) { // more than 3 days gone and not is stats => redirect to stats wp_redirect( trailingslashit($pl) . '/stats' ); exit(); } elseif( ! $gone && ( $is_stats || $is_cm ) ) { // we are in 3 days frame and trying to access to stats => redirect to post wp_redirect( $pl ); exit(); } } }