براتی طراح سایت

ویژگی کپی کردن برگه و نوشته ها در وردپرس

مشخصات مقاله:
بروزرسانی: مرداد ۱۴۰۴
کپی کردن برگه نوشته در وردپرس
فهرست مطالب

خلاصه:

بوسیه کد آماده + افزونه. ویژگی کپی کردن برگه و نوشته ها در وردپرس را اصافه کنید.

مرحله  توضیحات  تنظیمات
افزودن کد فایل فانکشن چایلد  چایلد یا اصلی
نوشته‌ها برگه ها وکامرس گزینه “Duplicate” را اضافه میکند بطور خودکار همه محتواها شامل میشه

duplicate page

افزودن ویژگی کپی کردن برگه و نوشته ها در وردپرس

افزودن ویژگی کپی کردن برگه و نوشته ها در وردپرس: این کد یک قابلیت کپی‌سازی (Duplicate) برای نوشته‌ها، برگه‌ها و محصولات ووکامرس به مدیریت وردپرس اضافه می‌کند. در ادامه توضیح عملکرد آن را بررسی می‌کنیم.

  • افزونه سبک و معتبر از مخزن
  • کد بسیار عالی و برنامه نویسی شده

اهمیت کپی کردن برگه‌ها و نوشته‌ها 

فکرشو بکنید: یه برگه یا نوشته رو با کلی زحمت درست کردید، حالا می‌خواید یه نسخه مشابهش بسازید، مثلاً برای یه محصول جدید یا یه تست ساده. آیا باید از صفر شروع کنید؟ نه دیگه! با افزون ویژگی کپی کردن برگه و نوشته ها در وردپرس در تمام پست تایپ ها این ویزگی کاربردی اضاف خواهد شد!

کپی کردن برگه ها در سایت

روش های مختلف کپی کردن

روش های زیادی برای کپی کردن برگه ها و نوشته ها موجود نیست ! فقط دو روش رایج موجد هست که اولی از دومی بهتر امن تر و سبک تره!

  • قابلیت کپی کاری با کد نویسی⭐⭐⭐⭐⭐
  • قابلیت کپی کاری با افزونه⭐

کپی برگه محصول در ووکامرس

این قابلیت در ابتدا برای نوشته‌ها (`post`) و برگه‌ها (`page`) فعال بود، اما اکنون برای محصولات ووکامرس (`woocommerce_product_row_actions`) نیز اضافه شده است. این یعنی:
– در صفحه‌ی محصولات ووکامرس نیز همین گزینه در کنار محصولات ظاهر خواهد شد.

کپی برگه

مقاله مرتبط:  پیدا کردن هاست سایت 💕 - ویدیو

اصلاحیه کد: بجای اصطلاح duplicate از کلمه فارسی کپی استفاده میشه!


ویژگی کدهای کپی ساز برگه و نوشته

  1. ✅ کاربردی و تمیز: این کد مستقیماً با وردپرس و پایگاه داده‌ی آن تعامل دارد، بنابراین بدون وابستگی به افزونه‌های اضافی کار می‌کند.
  2. ✅ حفظ اطلاعات متا و دسته‌بندی‌ها: هنگام کپی، تمامی اطلاعات مربوط به پست اصلی، از جمله متادیتاها و دسته‌بندی‌ها، عکس شاخص و… به نسخه‌ی جدید منتقل می‌شود.
  3. ✅ سازگار با ووکامرس – برگه – نوشته
  4. ✅ یک کلیک = یک نسخه‌ی جدید
  5. ✅ برگه‌های فرود (Landing Pages)
  6. ✅برگه کپی شده پیش نویس هست و مشکل ایندکس  ندارد
  7. ✅ کپی برای پست تایپ های اختصاصی

آموزش های رایگان بیشتر : طراحی سایت شرکتی

محل نوشتن کدهای

بهترین مکان های که وردپرس گارهای حرفه ای برای قرار دادن کدهای خود در نظر میگیرند بترتیب به شرح زیر میباشد:

  1. wpcode افزونه ⭐⭐⭐⭐⭐
  2. فایل مربوطه قالب چایلد ⭐⭐⭐⭐
  3. فایل اصلی فانکشن قالب⭐

    کد برای اضافه کردن به قالب چایلد :

<?php
// افزودن لینک Duplicate به ردیف‌های عملیاتی پست‌ها
function custom_add_duplicate_link($actions, $post) {
    if (current_user_can('edit_post', $post->ID)) {
        $nonce = wp_create_nonce('custom_duplicate_post_' . $post->ID);
        $url = admin_url('admin.php?action=custom_duplicate_post&post=' . $post->ID . '&_wpnonce=' . $nonce);
        $actions['duplicate'] = '<a href="' . esc_url($url) . '" title="کپی این پست">کپی</a>';
    }
    return $actions;
}

// افزودن لینک Duplicate به تمام پست‌تایپ‌های عمومی
$post_types = get_post_types(['public' => true], 'names');
foreach ($post_types as $type) {
    add_filter("{$type}_row_actions", 'custom_add_duplicate_link', 10, 2);
}

// اکشن برای کپی پست
add_action('admin_action_custom_duplicate_post', function() {
    // بررسی اولیه درخواست
    if (empty($_GET['post']) || empty($_GET['_wpnonce'])) {
        wp_die('درخواست نامعتبر است.', 'خطا', ['back_link' => true]);
    }

    $post_id = intval($_GET['post']);
    if (!wp_verify_nonce($_GET['_wpnonce'], 'custom_duplicate_post_' . $post_id)) {
        wp_die('خطای امنیتی.', 'خطا', ['back_link' => true]);
    }

    if (!current_user_can('edit_post', $post_id)) {
        wp_die('شما اجازه کپی این پست را ندارید.', 'خطا', ['back_link' => true]);
    }

    $post = get_post($post_id);
    if (!$post) {
        wp_die('پست یافت نشد.', 'خطا', ['back_link' => true]);
    }

    // آماده‌سازی داده‌ها برای پست جدید
    $data = [
        'post_title'   => $post->post_title . ' (کپی)',
        'post_content' => $post->post_content,
        'post_status'  => 'draft',
        'post_type'    => $post->post_type,
        'post_author'  => $post->post_author,
        'post_excerpt' => $post->post_excerpt,
        'post_parent'  => $post->post_parent,
        'menu_order'   => $post->menu_order,
    ];

    $new_post_id = wp_insert_post($data, true);
    if (is_wp_error($new_post_id)) {
        wp_die('خطا در کپی کردن پست: ' . $new_post_id->get_error_message(), 'خطا', ['back_link' => true]);
    }

    // کپی طبقه‌بندی‌ها (Taxonomies)
    foreach (get_object_taxonomies($post->post_type) as $taxonomy) {
        $terms = wp_get_object_terms($post_id, $taxonomy, ['fields' => 'ids']);
        if (!empty($terms)) {
            wp_set_object_terms($new_post_id, $terms, $taxonomy);
        }
    }

    // کپی متاداده‌ها با فیلتر کردن موارد غیرضروری
    $skip_meta = ['_edit_lock', '_edit_last'];
    $meta = get_post_meta($post_id);
    foreach ($meta as $key => $values) {
        if (in_array($key, $skip_meta)) continue;
        update_post_meta($new_post_id, $key, maybe_unserialize($values[0]));
    }

    // کپی تصویر شاخص بدون ایجاد کپی جدید
    if ($thumbnail_id = get_post_thumbnail_id($post_id)) {
        update_post_meta($new_post_id, '_thumbnail_id', $thumbnail_id);
    }

    // ریدایرکت با پیام موفقیت
    wp_redirect(
        add_query_arg(
            [
                'post_type' => $post->post_type,
                'duplicated' => '1',
            ],
            admin_url('edit.php')
        )
    );
    exit;
});

// نمایش پیام موفقیت
add_action('admin_notices', function() {
    if (isset($_GET['duplicated']) && $_GET['duplicated'] == '1') {
        echo '<div class="notice notice-success is-dismissible"><p>پست با موفقیت کپی شد.</p></div>';
    }
});


ویژگی‌ها کد

  • سازگاری با functions.php یا WPCode:
    • کد به‌صورت یک قطعه مستقل طراحی شده و نیازی به ساختار افزونه ندارد.
    • می‌توانید آن را مستقیماً در فایل functions.php قالب یا در افزونه WPCode قرار دهید.
  • استانداردهای وردپرس:
    • استفاده از wp_create_nonce و wp_verify_nonce برای امنیت.
    • تعریف اکسن سفارشی، که استانداردتر از edit.php است.
    •  URL تمیز و ایمن.
  • کپی جامع داده‌ها:
    • کبی post_title (با پسوند “کپی“)، post_content، post_excerpt، post_parent و menu_order.
    • کبی تمام طبقه‌بندی‌ها (دسته‌بندی‌ها و تگ‌ها).
    • کپی متاها با فیلتر کردن موارد غیرضروری (_edit_lock, _edit_last, _thumbnail_id).
  • کپی تصویر شاخص+کپی تصاویر محتوا  بدون ایجاد نسخه جدید:
    • با استفاده از get_post_thumbnail_id و update_post_meta، ID تصویر اصلی به پست جدید منتقل می‌شود (_thumbnail_id)، بنابراین از همان تصویر موجود استفاده می‌شود و هیچ کپی یا لینک جدیدی ایجاد نمی‌شود.
  • خوانایی و بهینه‌سازی:
    • استفاده از پیشوند custom_ برای جلوگیری از تداخل با افزونه‌ها.
مقاله مرتبط:  پیش بینی رتبه یک گوگل

افزونه duplicate page

بدترین حالت ولی آسان ترین حالت اضافه کردن ویژگی کپی کردن برگه و نوشته ها در وردپرس – استفاده از پلاگین مربوطه است


مقاله افزایش سرعت المنتور

خدمات پشتیبانی سایت وردپرسی
بعد از تکمیل فرم وبررسی اولیه باشما تماس می گیرم

 

 

۴.۱/۵ - (۱۶ امتیاز)
Telegram
WhatsApp
Email
LinkedIn
پشتیبان سایت

5 پاسخ

دیدگاهتان را بنویسید

یک × 3 =