Events: Suche nach anderen Events mit gleichem Startdatum und Kategorie

Ich verwende den Veranstaltungskalender und (korrigiere mich, wenn ich falsch liege), es wird nicht überprüft, ob ein Ereignis einen Zeitkonflikt mit einem anderen Ereignis hat, das bereits eingegeben wurde. Wenn beispielsweise in einer Kategorie bereits ein Ereignis mit einer bestimmten Startzeit vorhanden ist, kann kein anderes Ereignis mit derselben Startzeit und derselben Kategorie gebucht werden. Das wäre ein Konflikt.

Gibt es eine Möglichkeit, die Werte in der database nach Startzeit und Kategorie zu überprüfen, wenn der Ereignisbeitrag gesendet wird, und wenn beide Werte für einen Beitrag bereits vorhanden sind, kicken Sie den Benutzer zurück auf die Seite Ereignis hinzufügen?

EDIT: Hier ist, was ich versuche, in der functions.php-Datei als der ursprüngliche save_post Hook zu verwenden:

add_action('save_post', 'nu_time_conflict'); function nu_time_conflict($post_id) { $prevent_publish = NULL; if (isset($_REQUEST['EventStartDate']) && isset($_REQUEST['EventStartHour']) && isset($_REQUEST['EventStartMinute'])) { $start_date = date( TribeDateUtils::DBDATETIMEFORMAT, strtotime($_REQUEST['EventStartDate'] . " " . $_REQUEST['EventStartHour'] . ":" . $_REQUEST['EventStartMinute'] . ":00") ); } else { die('Ingen datum valde.'); } if (isset($_REQUEST['EventEndDate']) && isset($_REQUEST['EventEndHour']) && isset($_REQUEST['EventEndMinute'])) { $end_date = date( TribeDateUtils::DBDATETIMEFORMAT, strtotime($_REQUEST['EventEndDate'] . " " . $_REQUEST['EventEndHour'] . ":" . $_REQUEST['EventEndMinute'] . ":59") ); } else { die('Ingen datum valde.');; } //Query post type 'tribe_events' to check for posts whose meta values match the POSTed ones $args = array( 'post__not_in'=> array($post_id), 'post_type' => 'tribe_events', 'post_status' => array('publish','pending','future','private'), 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'EventStartDate', 'value' => array(strtotime($start_date),strtotime($end_date)), 'compare' => 'BETWEEN' ), array( 'key' => 'EventEndDate', 'value' => array(strtotime($start_date),strtotime($end_date)), 'compare' => 'BETWEEN' ) ) ); $existingMeta = get_posts( $args ); if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if(empty($existingMeta)){ remove_action('save_post', 'nu_time_conflict'); wp_update_post(array('ID' => $post_id, 'post_status' => 'pending')); $current_user = wp_get_current_user(); $user_mail = $current_user->user_email; $admin_email = get_option('admin_email'); $type = get_post_type( $post_id ); if (( !wp_is_post_revision( $post_id )) && ($type = 'tribe_events' )) { $to = array($user_mail, $admin_email); $subject = 'Ny bokning'; $message = $current_user->user_firstname.' '.$current_user->user_lastname.' har skapat en ny bokning.
'; $message .= 'För att redigera gå in på ' .get_permalink($post_id).'

'; $message .= 'OBS! Bokningen är inte giltig utan att bli bekräftad av administratören.'; wp_mail($to, $subject, $message ); } add_action('save_post', 'nu_time_conflict'); $prevent_publish = FALSE; } else { $prevent_publish = TRUE; } if ($prevent_publish) { remove_action('save_post', 'nu_time_conflict'); wp_update_post(array('ID' => $post_id, 'post_status' => 'draft')); add_action('save_post', 'nu_time_conflict'); } }

Und hier wäre meine Weiterleitung und benutzerdefinierte Nachricht:

 add_filter('redirect_post_location','nu_redirect_location',10,2); function nu_redirect_location($location,$post_id){ if (isset($_POST['publish'])) { $status = get_post_status( $post_id ); if($status=='draft'){ $location = add_query_arg('message', 10, $location); } } return $location; } add_filter('post_updated_messages', 'nu_custom_messages'); function nu_custom_messages($messages){ $messages['tribe_events'][10] = 'Den valda tiden är inte tillgänglig. Välj ny tid'; return $messages; } 

Es führt entweder keinen Vergleich durch, um zu prüfen, ob diese Daten existieren oder ob etwas mit meiner IF-statement falsch ist. Es denkt, dass alle Einträge gültig sind und sendet E-Mails, und ich setze absichtlich falsche ein. So werden die Beiträge nicht als Entwürfe markiert, und die Nachricht ist die für einen erfolgreichen Beitrag. (Die E-Mails werden auch gesendet, wenn die Seite geladen wird, bevor irgendwelche Daten gesendet werden. Was ist damit? Sollte ich save_post nicht verwenden?)

Jede Hilfe wird sehr geschätzt. Da der Veranstaltungskalender keine Verfügbarkeitsfunktion hat, soweit ich das beurteilen kann, wäre es perfekt, dies zum Laufen zu bringen.

Solutions Collecting From Web of "Events: Suche nach anderen Events mit gleichem Startdatum und Kategorie"