Skip to content
Media

Media

  • Trang chủ
  • Download
    • Phần mềm đồ họa
    • Phần mềm lập trình
    • Phần mềm văn phòng
    • Windows
  • WordPress
    • Themes
    • Plugins
  • Thủ thuật
  • Audio Truyện
  • Chính sách
Media

Media

  • Home » 
  • Thủ thuật » 
  • Làm thế nào để sao chép trang hoặc bài đăng trên WordPress chỉ bằng một cú nhấp chuột?

Làm thế nào để sao chép trang hoặc bài đăng trên WordPress chỉ bằng một cú nhấp chuột?

By Lê Giang 06/10/2024 0 195 Views
Mục lục

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.)

bnixvn doc image

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ả.

Đánh giá post
Tags : Tags tips
Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

Download Office 2024

Next post

Tích hợp mã QR Code thanh toán vào đơn hàng WooCommerce WordPress

Có thể bạn quan tâm

Làm thế nào để sao chép trang hoặc bài đăng trên WordPress chỉ bằng một cú nhấp chuột?

Cài Đặt AdGuard Home

Làm thế nào để sao chép trang hoặc bài đăng trên WordPress chỉ bằng một cú nhấp chuột?

Tích hợp mã QR Code thanh toán vào đơn hàng WooCommerce WordPress

Cập nhật mới

BỊ GẢ BÁN CHO NHÀ TIỂU THƯ TRẢ NỢ | chàng trai ở rể bị coi khinh!

10/03/2025
Adguard

Cài Đặt AdGuard Home

11/10/2024
Blocksy Theme

Blocksy Theme

11/10/2024
Le Giang Web Image

Tích hợp mã QR Code thanh toán vào đơn hàng WooCommerce WordPress

10/10/2024
How to Duplicate a WordPress Page or Post with a Single Click

Làm thế nào để sao chép trang hoặc bài đăng trên WordPress chỉ bằng một cú nhấp chuột?

06/10/2024
Nvme Hosting Singapore
Nvme Hosting Singapore
Phụ trách nội dung: Đinh Lê Giang
  • Chính sách miễn trừ trách nhiệm
Menu
  • Trang chủ
  • Download
    • Phần mềm đồ họa
    • Phần mềm lập trình
    • Phần mềm văn phòng
    • Windows
  • WordPress
    • Themes
    • Plugins
  • Thủ thuật
  • Audio Truyện
  • Chính sách