所以我似乎无法弄清楚这个逻辑,所以我想看看是否有人可以帮助我。
所以我有以下内容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";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句