SAVE_POST函数不断触发:WARNING:ARRAY_MAP():参数#2应为数组...从垃圾桶恢复时

时间:2018-03-15 作者:SHA3.org

如何获取自定义的save\\u post函数,以返回post状态为“trash”的项目的默认$post\\u id、$post和$status?

无论我以何种方式返回,都会发出警告:array\\u map():参数#2应该是in/post中的数组。php在线1980

从垃圾箱还原或更改post状态(如果我使用不同的状态播放)时垃圾箱中的项目。似乎任何返回都不会返回默认数组。

我们需要回到基本点上来。下面是代码,除了从垃圾箱中恢复项目时,bugs out。

谢谢

 //add_action(\'init\', array( $this, \'init\' ), 10, 2 );

add_action( \'save_post\', \'update_children\', 10, 2);
function update_children( $post_id, $post ) {

    if ( \'trash\' != $post->post_status ){

        // Is a top level post
        if( 0 === $post->post_parent ) {
            $children = array(
                \'post_parent\'   => $post->ID,
                \'post_type\'         => \'any\',   //you can use also \'any\'
                \'fields\'            => \'ids\',   // Only Return IDs
                \'post_status\' => \'publish\',
            );
            global $post;

            if ((is_array($children))&&(!empty( $children ))){
                $the_query = new WP_Query( $children );
            }
            // The Loop
            if ( $the_query->have_posts() ) :
            while ( $the_query->have_posts() ) : $the_query->the_post();
            $pages[] = get_the_ID();
            //$pages = array();         

            if ((is_array($children))&&(!empty( $children ))) {     
                foreach( $children as $child_ids ) {
                    remove_action( \'save_post\', \'update_children\', 10, 2);
                    wp_update_post( $pages );
                    add_action( \'save_post\', \'update_children\', 10, 2);
                }           
            }
            endwhile;
            endif;      
        }
    }
}

1 个回复
SO网友:SHA3.org

因此,我必须显式定义键值对,以便在取消分级时使其工作。不知道为什么它在其他地方都能工作,尽管它只是一个ID数组。

已添加:

$thisupdate = array (
                    \'fields\'      => $pages,
                    \'post_status\' => \'publish\'
);

wp_update_post( $thisupdate );

结束

相关推荐

Functions.php过滤器未应用于AJAX调用

我已经使用php向菜单中添加了一个元素(为了便于说明,简化了代码):add_filter( \'wp_nav_menu_\' . $menu_slug . \'_items\', \'add_menu_item\' , 10, 2 ); function add_menu_item ( $items ) { $item = sprintf(\'<li class=\"custom-item\">%s</li>\', menu_item_content ()