Так что я не могу понять эту логику, поэтому я обращаюсь, чтобы узнать, может ли кто-нибудь помочь мне.
Итак, у меня есть следующее foreach:
echo "Page: " . $page_placement . "/" . $total_pages . "\n\n";
foreach ($posts as $post) {
$current_post_id = post_exists(
$post->title->rendered,
'',
'',
'',
''
);
if ($current_post_id === 0) {
$my_post = [
'post_type' => 'post',
'post_status' => 'pending',
'post_title' => wp_strip_all_tags($post->title->rendered),
'post_content' => wp_strip_all_tags($post->content->rendered),
'post_excerpt' => wp_strip_all_tags($post->excerpt->rendered),
'post_author' => 1,
'post_date' => $post->date,
];
// Insert post.
$post_id = wp_insert_post($my_post);
wp_set_object_terms($post_id, 'Global', 'category');
wp_set_object_terms($post_id, 'Global', 'post_tag');
echo "ID: " . $post->id . " - Title: " . $post->title->rendered . " has been imported.\n";
}
}
Он захватывает 50 $posts, а затем выполняет цикл и вызывает post_exists(), чтобы проверить заголовок сообщения, и если он не существует, он импортирует сообщение, иначе пропустит его.
Как я могу отобразить эхо-сообщение, если все 50 сообщений не импортированы?
Я не могу вызвать if (!$current_post_id) { внутри foreach, так как оно отобразит сообщение 50 раз, и я попытался воспроизвести переменную вне foreach, а затем вызвать $my_post[] = [ .... ], но тогда wp_import_post не сработало.






Просто используйте переменную (например, $imported, начальное значение = 0), чтобы проверить количество. Если импортировано, увеличьте его.
Итак, наконец, если переменная все еще равна 0, вызовите оператор echo
Следовательно:
<?php
echo "Page: " . $page_placement . "/" . $total_pages . "\n\n";
$imported=0;
foreach ($posts as $post) {
$current_post_id = post_exists(
$post->title->rendered,
'',
'',
'',
''
);
if ($current_post_id === 0) {
$my_post = [
'post_type' => 'post',
'post_status' => 'pending',
'post_title' => wp_strip_all_tags($post->title->rendered),
'post_content' => wp_strip_all_tags($post->content->rendered),
'post_excerpt' => wp_strip_all_tags($post->excerpt->rendered),
'post_author' => 1,
'post_date' => $post->date,
];
// Insert post.
$post_id = wp_insert_post($my_post);
wp_set_object_terms($post_id, 'Global', 'category');
wp_set_object_terms($post_id, 'Global', 'post_tag');
echo "ID: " . $post->id . " - Title: " . $post->title->rendered . " has been imported.\n";
$imported++;
}
}
if ($imported==0){
echo "No record imported";
}
Есть ли способ обработать ошибку Variable '$imported' is probably undefined для оператора if вне foreach?
Я немного изменил свой ответ - попробуйте мой обновленный ответ
Это доведено до совершенства, еще раз спасибо!
Хорошо. Хорошего дня и удачного кодирования!
Работал отлично! Спасибо @Ken, я не могу одобрить ответ в течение нескольких минут, так что подожду.