Trong bài viết ngắn này, tôi sẽ chỉ cho bạn cách sao chép trang hoặc bài đăng WordPress chỉ bằng một cú nhấp chuột. Phương pháp này không chỉ thực sự đơn giản mà còn sao chép toàn bộ ngày meta mà bài đăng của bạn có thể có (trường tùy chỉnh, hình ảnh nổi bật, v.v.)
Nếu bạn nhấp vào liên kết này thì:
- Bản sao của bài đăng sẽ được tạo
- Trạng thái của bài viết là “Bản nháp”
- Bạn sẽ được chuyển hướng đến trang chỉnh sửa bài đăng
Vì vậy, để nó hoạt động, chỉ cần sử dụng mã dưới đây. Thêm vào file functions.php của theme đang dùng
// Duplicate a WordPress Page or Post with a Single Click
add_filter("post_row_actions", "wpsh_add_duplicate_link", 10, 2);
add_filter("page_row_actions", "wpsh_add_duplicate_link", 10, 2); // add the link to pages too
function wpsh_duplicate_post_as_draft()
{
if (!current_user_can("edit_posts")) {
return;
}
if (
!isset($_GET["duplicate_nonce"]) ||
!wp_verify_nonce($_GET["duplicate_nonce"], basename(__FILE__))
) {
return;
}
global $wpdb;
if (
!(
isset($_GET["post"]) ||
isset($_POST["post"]) ||
(isset($_REQUEST["action"]) &&
"wpsh_duplicate_post_as_draft" == $_REQUEST["action"])
)
) {
wp_die("No post to duplicate has been supplied!");
}
// This on here gets the original post id and post all the original post data
$post_id = isset($_GET["post"])
? absint($_GET["post"])
: absint($_POST["post"]);
$post = get_post($post_id);
// In case you don't want current user to be the new post author, then change this line to this: $new_post_author = $post->post_author;
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
// If post data exists, create the post duplicate
if (isset($post) && $post != null) {
$args = [
"comment_status" => $post->comment_status,
"ping_status" => $post->ping_status,
"post_author" => $new_post_author,
"post_content" => $post->post_content,
"post_excerpt" => $post->post_excerpt,
"post_name" => $post->post_name,
"post_parent" => $post->post_parent,
"post_password" => $post->post_password,
"post_status" => "draft",
"post_title" => $post->post_title,
"post_type" => $post->post_type,
"to_ping" => $post->to_ping,
"menu_order" => $post->menu_order,
];
$new_post_id = wp_insert_post($args);
// Get all current post terms ad set them to the new post draft
$taxonomies = get_object_taxonomies($post->post_type);
foreach ($taxonomies as $taxonomy) {
$post_terms = wp_get_object_terms($post_id, $taxonomy, [
"fields" => "slugs",
]);
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
}
// Duplicate all post meta
$post_meta_infos = $wpdb->get_results(
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"
);
if (count($post_meta_infos) != 0) {
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
foreach ($post_meta_infos as $meta_info) {
$meta_key = $meta_info->meta_key;
if ($meta_key == "_wp_old_slug") {
continue;
}
$meta_value = addslashes($meta_info->meta_value);
$sql_query_sel[] = "SELECT $new_post_id, '$meta_key', '$meta_value'";
}
$sql_query .= implode(" UNION ALL ", $sql_query_sel);
$wpdb->query($sql_query);
}
// Redirect to the edit post screen for the new draft
wp_safe_redirect(
admin_url("post.php?action=edit&post=" . $new_post_id)
);
exit();
} else {
wp_die(
"Post creation failed, could not find original post: " . $post_id
);
}
}
add_action(
"admin_action_wpsh_duplicate_post_as_draft",
"wpsh_duplicate_post_as_draft"
);
// Add the "Duplicate" link to action list for post_row_actions
function wpsh_add_duplicate_link($actions, $post)
{
if (current_user_can("edit_posts")) {
$actions["duplicate"] =
'<a href="' .
wp_nonce_url(
"admin.php?action=wpsh_duplicate_post_as_draft&post=" . $post->ID,
basename(__FILE__),
"duplicate_nonce"
) .
'" title="Duplicate this item" rel="permalink">Duplicate</a>';
}
return $actions;
}
Chỉ đơn giản vậy thôi, không cần dùng plugin gì cả
Xin chào, link download không truy cập được, Báo lỗi “Sorry, there have been too many anonymous link requests for files and folders on this site. Please try again later.”.
Bạn vui lòng upload link khác nhé.
Trong bài này không có link nào download cả