Überprüfen Sie, ob Beitragstitel vorhanden ist, fügen Sie Beiträge ein, wenn dies nicht der Fall ist, fügen Sie inkrementelle # zu Meta hinzu, wenn dies der Fall ist

Ich habe bereits eine function, bei der ein Benutzer ein Formular einreicht und einen benutzerdefinierten Beitrag erstellt …

 $postTitle, 'post_content' => '', 'post_status' => 'publish', 'post_date' => date('Ymd H:i:s'), 'post_author' => '', 'post_type' => 'stuff', 'post_category' => array(0) ); $post_id = wp_insert_post($new_post); add_post_meta($post_id, 'times', '1'); } 

Ich möchte überprüfen, ob der benutzerdefinierte Beitragstitel existiert, und wenn dies nicht der Fall ist, gehe voran und erzeuge den Beitrag mit einer # 1 im Meta-Feld, und wenn es existiert, füge einfach 1 zum Metafeld hinzu

Solutions Collecting From Web of "Überprüfen Sie, ob Beitragstitel vorhanden ist, fügen Sie Beiträge ein, wenn dies nicht der Fall ist, fügen Sie inkrementelle # zu Meta hinzu, wenn dies der Fall ist"

Dies würde eine Abfrage benötigen.

Also aufbauend auf deinem Code:

 < ?php $postTitle = $_POST['post_title']; $submit = $_POST['submit']; if(isset($submit)){ global $user_ID, $wpdb; $query = $wpdb->prepare( 'SELECT ID FROM ' . $wpdb->posts . ' WHERE post_title = %s AND post_type = \'stuff\'', $postTitle ); $wpdb->query( $query ); if ( $wpdb->num_rows ) { $post_id = $wpdb->get_var( $query ); $meta = get_post_meta( $post_id, 'times', TRUE ); $meta++; update_post_meta( $post_id, 'times', $meta ); } else { $new_post = array( 'post_title' => $postTitle, 'post_content' => '', 'post_status' => 'publish', 'post_date' => date('Ymd H:i:s'), 'post_author' => '', 'post_type' => 'stuff', 'post_category' => array(0) ); $post_id = wp_insert_post($new_post); add_post_meta($post_id, 'times', '1'); } } 

Sollte es tun

WordPress prüft, ob Post nach Titel existiert

 function wp_exist_post_by_title( $title ) { global $wpdb; $return = $wpdb->get_row( "SELECT ID FROM wp_posts WHERE post_title = '" . $title . "' && post_status = 'publish' && post_type = 'post' ", 'ARRAY_N' ); if( empty( $return ) ) { return false; } else { return true; } } // usage if( wp_exist_post_by_title( $post->name ) ) { // post exist } else { // post does not exist } 

Sie können die function get_page_by_title () von WordPress verwenden:

 < ?php $postTitle = $_POST['post_title']; $submit = $_POST['submit']; if(isset($submit)){ $customPost = get_page_by_title($postTitle, OBJECT, 'stuff'); if(!is_null($customPost)) { $meta = get_post_meta($customPost->ID, 'times', true); $meta++; update_post_meta($customPost->ID, 'times', $meta); return } global $user_ID; $new_post = array( 'post_title' => $postTitle, 'post_content' => '', 'post_status' => 'publish', 'post_date' => date('Ymd H:i:s'), 'post_author' => '', 'post_type' => 'stuff', 'post_category' => array(0) ); $post_id = wp_insert_post($new_post); add_post_meta($post_id, 'times', '1'); } 

Eine post_exists() Methode kann die post_exists() -function wie post_exists() :

 if( isset( $_POST['submit'] ) ){ $post_title = sanitize_title( $_POST['post_title'] ); $new_post = array( 'post_title' => $post_title, 'post_content' => '', 'post_status' => 'publish', 'post_date' => date('Ymd H:i:s'), 'post_author' => '', 'post_type' => 'stuff', 'post_category' => array(0) ); $post_id = post_exists( $post_title ) or wp_insert_post( $new_post ); update_post_meta( $post_id, 'times', '1' ); }