php wp_insert_post()成功创建帖子,但无法查询

kzipqqlq  于 2023-05-12  发布在  PHP
关注(0)|答案(1)|浏览(99)

下面的代码是:

$post_args = array(
    'post_title'    => $title,
    'post_type'     => 'calendar', // my post type
    'post_content'  => $content,
    'post_status'   => 'publish',
    'post_date'     => date( 'Y-m-d H:i:s', time() ),
    'post_author'   => get_current_user_id(),
);

$ID = wp_insert_post($post_args);

文章创建,我可以检查它的WordPress管理和所有领域都确定。但是,查询这些帖子的页面没有显示任何帖子。它只开始显示在查询,如果我更新它的管理,
我已经测试了很多方法,尝试将其创建为普通post,然后将其更改为自定义类型,删除了我函数的所有其他部分,只留下我发布的这一个,但到目前为止没有好的结果。
我甚至添加了一些根本不需要的新args,将args更改为以下内容:

$post_args = array(
    'post_title'    => $title,
    'post_name'     => $title,
    'post_type'     => 'calendar', // my post type
    'post_content'  => $content,
    'post_excerpt'  => $content,
    'post_status'   => 'publish',
    'post_date'     => date( 'Y-m-d H:i:s', time() ),
    'post_author'   => get_current_user_id(),
);

但没有成功。会是什么呢?

查询页面编码:

$args = array(
    'num'      => -1,
    'user'     => $clienteId,
    'status'   => array( 'producao', 'aguardando', 'ajuste', 'reprovado')
);

// a custom function I've built for my system, it requires and returns the document with the wp query args
$calendar = obter_query('manage', 'calendar', 'iniciar', $args);

if ($calendar->have_posts()) : while ($calendar->have_posts()) : $calendar->the_post();  

    require get_stylesheet_directory() . '/template-parts/manage/sessions/calendar.php';

查询参数代码:

$queryargs = array(
    'post_type'       => 'calendar',
    'order'           => 'ASC',
    'posts_per_page'  => $args['num'],

    'post_status' => array(
        'publish', 
        'future'
    ),

    // ACF custom meta fields
    'meta_query'    => array(
        'relation'      => 'AND',

        array(
            'key'       => 'client', 
            'value'     => $args['user'],
            'compare'   => '=',
        ),

        array(
            'key'       => 'status',
            'value'     => $args['status'],
            'compare'   => 'IN',
        ),
    ),
);

obter_query()函数代码

function obter_query($local, $file, $action, $args = null){

    require get_stylesheet_directory() . '/inc/querys/' . $local . '/' . $file . '.php';

    // If action == 'iniciar', it creates the WP_Query()
    if ($action == 'iniciar'){
        return new WP_Query($queryargs);
    }

    // else, only return the args
    return $queryargs;
}

只是提醒你们,当我在WordPress管理员上发布新日历时,查询通常会显示它。它还显示我是否更新了在管理员上创建的代码日历。

tcomlyy6

tcomlyy61#

好吧,这是入殓。

一直以来的问题是我在创建帖子时没有设置ACF字段'status',并且**acf meta密钥'status'用于查询参数。**我发现当我删除该参数时,帖子开始显示。

我没有注意到我的代码没有设置状态,因为当我在wp admin上打开帖子时,状态在那里,定义,但发生了,因为这个字段有默认选项。因此,通过打开帖子和更新,acf设置了标准状态,并允许我的查询找到这篇帖子。
非常感谢所有评论并帮助我找到问题的人。
我会把创建帖子的代码的原始部分和缺失的部分放在这里:

负责程序化创建帖子的原始代码:

// Arguments
$post_args = array(
    'post_title'    => $titulo,
    'post_type'     => 'calendario', 
    'post_content'  => $conteudo,
    'post_status'   => 'publish',
    'post_date'     => date( 'Y-m-d H:i:s', time() ),
    'post_author'   => get_current_user_id(),
);

// Create the post and gets the new post ID
$ID = wp_insert_post($post_args);

// Insert some meta data, respectively to the calendar owner, calendar month and year
update_field( 'field_6457d4d1863bc', $clienteID, $ID );
update_field( 'field_6457d4d1863fc', $data_mes, $ID );
update_field( 'field_6457d4d18643a', $data_ano, $ID );

正如你所看到的,它缺少一个acf meta字段的更新。修复是通过将下面的代码添加到函数来实现的:

update_field( 'field_6457d4d186475', 'production', $ID);

相关问题