web-dev-qa-db-ja.com

役職が存在するかどうかを確認し、存在しない場合は投稿を挿入し、存在する場合はメタ番号に増分番号を追加します。

私はすでにユーザーがフォームを送信してカスタム投稿を作成する機能を持っています...

<?php $postTitle = $_POST['post_title'];
$submit = $_POST['submit'];

if(isset($submit)){

    global $user_ID;

    $new_post = array(
        'post_title' => $postTitle,
        'post_content' => '',
        'post_status' => 'publish',
        'post_date' => date('Y-m-d 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');

}

カスタム投稿のタイトルが存在するかどうかを確認し、存在しない場合はメタフィールドに#1を付けて投稿を作成し、存在する場合はメタフィールドに1を追加する

8
marctain

これはクエリが必要です。

だからあなたのコードの上に構築:

<?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('Y-m-d 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');
    }
}

やるべき

6
Barry Carlyon

もっとアップデートされたメソッドは 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('Y-m-d 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' );

}
7
Tim Hallman

@ティムホールマンいい答え。投稿が存在するかどうかを確認するには、関数 post_exists() を使用します。詳細は https://developer.wordpress.org/reference/ をご覧ください。

developer doc 

1
maheshwaghmare

あなたはWordPressのget_page_by_title()関数を使うことができます:

<?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('Y-m-d 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');

}
1
alxndrbauer

IDでできます


$post_title = "This Awesome Title";
$post_content = "My content of something cool.";
$post_status = "publish"; //publish, draft, etc
$post_type = "page" // or whatever post type desired

/* Attempt to find post id by post name if it exists */
$found_post_title = get_page_by_title( $post_title, OBJECT, $post_type );
$found_post_id = $found_post_title->ID;

/**********************************************************
** Check If Page does not exist, if true, create a new post 
************************************************************/
if ( FALSE === get_post_status( $found_post_id ) ): 

      $post_args = array(
        'post_title' => $post_title,
        'post_type' => $post_type,
        'post_content'=> $post_content,
        'post_status'  => $post_status,
        //'post_author'  => get_current_user_id(),

        /* If you have meta fields to enter data into */ 
        'meta_input'   => array(
            'meta_key1' => 'my value',
            'meta_key2' => 'my other value',
        ),
      );      


      /* Add a new wp post into db, return it's post id */
      $returned_post_id = wp_insert_post( $post_args );  

      /* Update page template only if using "page" as the post_type */ 
      update_post_meta( $returned_post_id, '_wp_page_template', 'my-page-template.php' ); 

      /* Add values into meta fields. Work with ACF CUSTOM FIELDS!! */
      $field_key = "My_Field_KEY";
      $value = "my custom value";
      update_field( $field_key, $value, $returned_post_id );

      $field_key = "My_Other_Field_KEY";
      $value = "my other custom value";
      update_field( $field_key, $value, $returned_post_id );

      /* Save a checkbox or select value */
      // $field_key = "My_Field_KEY";
      // $value = array("red", "blue", "yellow");
      // update_field( $field_key, $value, $returned_post_id );

      /* Save to a repeater field value */
      // $field_key = "My_Field_KEY";
      // $value = array(
      //   array(
      //     "ss_name" => "Foo",
      //     "ss_type" => "Bar"
      //   )
      // );
      // update_field( $field_key, $value, $returned_post_id );

      /* Echo a response! */
      echo "<span class='pg-new'><strong>". $post_title . " Created!</strong></span><br>";
      echo "<a href='".esc_url( get_permalink($returned_post_id) )."' target='_Blank'>". $post_title . "</a><p>";


else:        
/***************************
** IF POST EXISTS, update it 
****************************/

      /* Update post */
      $update_post_args = array(
        'ID'           => $found_post_id,
        'post_title'   => $post_title,
        'post_content' => $post_content,
      );

      /* Update the post into the database */
      wp_update_post( $update_post_args );

      /* Update values into meta fields */
      $field_key = "My_Field_KEY";
      $value = "my custom value";
      update_field( $field_key, $value, $found_post_id );

      $field_key = "My_Other_Field_KEY";
      $value = "my other custom value";
      update_field( $field_key, $value, $found_post_id );

      /* Echo a response! */
      echo "<span class='pg-update'><strong>". $post_title . " Updated!</strong></span><br>"; 
      echo "<a href='".esc_url( get_permalink($found_post_id) )."' target='_Blank'>View</a> | <a href='post.php?post=".$found_post_id."&action=edit'>". $post_title . "</a><p>";

endif;

0
samjco