PluginProbe
WPJAM Basic / trunk
WPJAM Basic vtrunk
wpjam-basic / extends / duplicate-post.php

duplicate-post.php in WPJAM Basic trunk, at extends/duplicate-post.php

36 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Name: 文章快速复制
4 URI: https://mp.weixin.qq.com/s/0W73N71wNJv10kMEjbQMGw
5 Description: 在后台文章列表添加一个快速复制按钮,复制一篇草稿用于快速新建。
6 Version: 1.0
7 */
8 is_admin() && wpjam_register_list_table_action('quick_duplicate', [
9 'title' => '快速复制',
10 'response' => 'duplicate',
11 'direct' => true,
12 'data_type' => 'post_type',
13 'callback' => 'wpjam_duplicate_post',
14 'post_type' => fn($v) => $v != 'attachment' && wpjam_get_post_type_setting($v, 'duplicatable') !== false,
15 ]);
16
17 function wpjam_duplicate_post($post_id){
18 $data = wpjam_except(get_post($post_id, ARRAY_A), ['ID', 'post_date_gmt', 'post_modified_gmt', 'post_name']);
19 $added = wpjam_try('WPJAM_Post::insert', array_merge($data, [
20 'post_status' => 'draft',
21 'post_author' => get_current_user_id(),
22 'post_date' => wpjam_date('Y-m-d H:i:s'),
23 'post_modified' => wpjam_date('Y-m-d H:i:s'),
24 'tax_input' => wpjam_fill(get_object_taxonomies($data['post_type']), fn($tax)=> wp_get_object_terms($post_id, $tax, ['fields'=>'ids']))
25 ]));
26
27 foreach(get_post_custom_keys($post_id) ?: [] as $key){
28 if($key == '_thumbnail_id' || ($key != 'views' && !is_protected_meta($key, 'post'))){
29 foreach(get_post_meta($post_id, $key) as $value){
30 add_post_meta($added, $key, $value, false);
31 }
32 }
33 }
34
35 return $added;
36 }