Undelete post (untrash)?

时间:2015-04-13 作者:T.Todua

应该使用哪个函数将帖子从垃圾箱移动到已发布的页面
即是否存在wp_undelete_post 或者类似的?

3 个回复
最合适的回答,由SO网友:cybmeta 整理而成

没有wp_undelete_post 但你还有其他选择:

  • wp_untrash_post(): 当post被丢弃时,以前的状态存储在_wp_trash_meta_status 元字段。wp_untrash_post() 将垃圾帖子恢复到以前的状态,不管它是什么;例如,private、inherit、publish。我还没有测试过,但应该可以a custom post status as well.
  • wp_publish_post(): 如果要从垃圾箱状态移动到发布状态
  • wp_update_post(): 从垃圾箱移动到任何其他状态

    if( get_post_status( $post_ID ) == "trash" ) {
        wp_update_post( array(
                       \'ID\'           => $post_ID,
                       \'post_status\'  => \'publish\'
                   )
        );
    }
    
    或:

    if( get_post_status( $post_ID ) == "trash" ) {
        wp_publish_post( $post_ID );
    }
    
    或:

    if( get_post_status( $post_ID ) == "trash" ) {
        wp_untrash_post( $post_ID );
    }
    

SO网友:Zank

它可能很旧,但它在我寻找类似问题时出现了。自WP 2.9.0起,有一个函数被调用:wp_untrash_post(int $post_id)

对我来说,它就像一个符咒。

SO网友:T.Todua

目前的解决方案是:

$page =get_page_by_path(\'my-slug\', OBJECT, \'page\');
if($page && \'trash\'==$page->post_status) { wp_update_post(array(\'ID\'=>$page->ID,\'post_status\'=>\'publish\')); }

结束

相关推荐

尝试修改插件中的自定义搜索功能以搜索POSTMETA表中的关键字以及POSTS表

我正在尝试修改一个插件,该插件搜索posts表,并让它也搜索POSTETA表中的meta\\u值。原始代码为:if (!($index_page = $wpdb->get_row(\"SELECT ID AS id, post_name AS slug FROM {$wpdb->posts} WHERE (post_content LIKE \'%[\" . W2DC_MAIN_SHORTCODE . \"]%\' OR post_content LIKE \'%[\" . W2DC_MAIN