WP_INSERT_POST帖子类型错误

时间:2017-12-18 作者:codesquid

很像this question, 我在wp\\U insert\\U post中遇到问题,导致递归添加post。然而,我确实实现了一个页面类型检查——问题是插入的帖子总是作为相同的类型添加,无论指定的类型是什么。

function create_auto_post($post_ID) {
    if (get_post_type($post_ID) != \'manually-published\') return;

    $post_ID = wp_insert_post(
            array(
                \'post_status\'       =>  \'publish\',
                \'post_type\'         =>  \'automatically-published\'
            )
        );
}

add_filter( \'save_post\', \'create_auto_post\', 1, 1);
插入的帖子属于手动发布的类型,因此会触发递归插入帖子,直到数据库超时。我做错了什么?

注意:我已尝试对筛选器使用“publish\\u manually-published”操作,问题是相同的-帖子被添加为“manually published”而不是“automatically published”。

1 个回复
SO网友:Tom J Nowell

问题是,如果创建的帖子不是manually-published, 但新职位是automatically-published, 这些不匹配。您的条件不够明确,因此在插入插入的帖子以防止无限循环时,需要跳过该场景

而不是:

function create_auto_post($post_ID) {
    if (get_post_type($post_ID) != \'manually-published\') return;
考虑:

function create_auto_post( $post_ID, $post ) {
    if ( in_array( $post->post_type, [ \'manually-published\', \'automatically-published\' ] ) {
        return;
    }
进一步说明:

这不是一个过滤器,实际上是一个动作,使用add_action 相反save_post 操作将post对象作为第二个参数传递,最好使用该参数。您需要指出此函数使用2个而不是1个参数才能工作。您的原始代码假定所有post都是2种post类型,但您忘记了图像/附件也是post类型,就像nav菜单中的菜单项以及其他插件添加的许多其他内容一样。现在它将创造automatically-published 张贴所有菜单项和附件,以及其他您可能没有考虑到的内容

结束

相关推荐

Posts list in custom taxonomy

我有这样的事情:$terms = get_the_terms( get_the_ID(), \'kosmetyki_dystrybutor\'); $terms_ids = []; foreach ( $terms as $term ) { $terms_ids[] = $term->term_id; } $args = array( \'post_type\' => \'kosmetyki\',