user
  • 0
Гуру

Пожалуйста, помогите с условным оператором, сопровождающим функцию wp_insert_post?

  • 0

Я пытаюсь программно вставлять сообщения из внешней базы данных MySQL в виде сообщений в моем блоге WordPress, у меня есть что-то, что работает, но WordPress не может проверить, существует ли уже сообщение, прежде чем оно вставит новое сообщение в момент, поэтому я получаю много повторяющихся записей.

Я уверен, что для тех, кто знает, как это сделать, мы говорим о некоторых простых условных операторах if, else здесь, но я не могу понять, что нужно проверить, чтобы убедиться, что сообщение еще не было добавлено в база данных вордпресс? Я понял, что это что-то вроде различия между wp_insert_post и wp_update_post, я просто не могу понять, что проверять и как заставить WordPress проверять каждую запись?

Нужно ли мне добавить некоторые данные custom_meta? Или, например, условный оператор может сверяться с заголовком или датой?

Действительно ценю любую помощь совета, который кто-нибудь может предложить?

Большое спасибо!

Мой код выглядит следующим образом:

                    if( ) {

                    // Create post object
                    $post = array();
                    $post['post_title'] = $user ." said " . $text;
                    $post['post_content'] = "<div class='tweet'><a href='" . $user_url . "'><img class='photo' src='" . $image . "' alt='" . $user . "' /></a><a href='" . $user_url . "'>" . $user . "</a> <strong>" . $date .": </strong><p>" . $text . "</p></div>\n";
                    $post['post_status'] = 'publish';
                    $post['post_date'] = date("jS F Y, G:i.s", $date);
                    //$post['post_type'] => 'post';

                    // Insert the post into the database
                    wp_insert_post( $post );

                 }
                 else {
                    // Update post object
                    $post = array();
                    $post['post_title'] = $user ." said " . $text;
                    $post['post_content'] = "<div class='tweet'><a href='" . $user_url . "'><img class='photo' src='" . $image . "' alt='" . $user . "' /></a><a href='" . $user_url . "'>" . $user . "</a> <strong>" . $date .": </strong><p>" . $text . "</p></div>\n";
                    $post['post_status'] = 'publish';
                    $post['post_date'] = date("jS F Y, G:i.s", $date);
                    //$post['post_type'] => 'post';


                    // Insert the post into the database
                    wp_update_post( $post );
             }
Share
  1. Какие уникальные данные возвращаются вашим внешним SQL-запросом? Я бы предположил, что вам нужно будет вставить какие-то уникальные данные (например, первичный ключ из внешней БД) в виде данных $post или метаданных, а затем ваше условие может искать существование этих уникальных данных.

    В качестве альтернативы вы можете хешировать постданные из внешней БД, а затем сохранять хэш-значение как метаданные $post и запрашивать существование хеш-значения?

    РЕДАКТИРОВАТЬ:

    Чтобы запросить определенные метаданные $post, используйте get_post_custom() функцию ( Codex ref ). например:

    $mypostcustom = get_post_custom( $post->ID );
    
    if ( ! isset( $mypostcustom['unique_query_data'] ) ) {
         // Unique query data not found; do something
    } else {
         // Unique query data found; do something else
    }
    

    Примечание: это предполагает, что вы уже разобрались, как добавлять пользовательские метаданные сообщений, например, через add_post_meta() ( Codex ref ).

    • 0

Оставить ответ

You must login to add an answer.