احسانم
7 ماه پیش توسط احسانم مطرح شد
6 پاسخ

duplicate کردن یه custom post type در وردپرس

سلام دوستان وقتتون بخیر
من برای duplicate کردن پست خیلی از افزونه هایی که این کار رو انجام میدن رو تست کردم ولی همشون یه مشکلی دارند که قسمت post meta رو در نظر نمیگیرن برای کپی کردن.
یکی دو تا که انجام میدن این کار رو پولی هستن یعنی باید نسخه پروش رو بخریم که داخل سایتای ایرانی نبودن هر چی گشتم.
ممنون میشم راهنمایی کنید که چطوری اینکار رو انجام بدم؟🙂 تصویر


ثبت پرسش جدید
مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 7 ماه پیش مطرح شد
1

سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨

برای انجام عملیات کپی پست به همراه متادیتاها (Post Meta) در وردپرس، می‌تونی اینکارو بکنی

**روش 1: افزونه‌های رایگان و متن‌باز

برخی افزونه‌های متن‌باز و رایگان وجود دارن از افزونه‌هایی مانند "Duplicate Post" یا "Duplicate Page and Post" می‌تونی توی مخزن خود وردپرس استفاده کنید. این افزونه‌ها پس از نصب و فعال‌سازی بهت امکان کپی کردن پست با تمام متادیتاهای اون رو میدن

افزونه "Duplicate Post" یا "Duplicate Page and Post"
پس از فعال‌سازی افزونه، در لیست پست‌ها و صفحات، گزینه "Duplicate" یا "کپی" برای هر پست به نمایشدر میاد. با کلیک بر روی این گزینه، یک نسخه کپی از پست با تمام متادیتاها ایجاد می‌شه.

روش 2: استفاده از کد سفارشی:

در صورتی که می‌خوای کد سفارشی بنویسی تا پست‌ها را به همراه متادیتاها کپی کنه، می‌تونی از تابع‌های وردپرس برای این کار استفاده کنی. به عنوان مثال، می‌توانید از تابع wp_insert_post() و get_post_meta() برای ایجاد پست جدید با متادیتاها استفاده کنی

این کد مثالی از چگونگی کپی کردن یک پست با تمام متادیتاها هستش

// شناسه پست اصلی که می‌خواهید کپی کنید
$original_post_id = 123;

// اطلاعات پست اصلی را دریافت کنید
$original_post = get_post($original_post_id);

// تمام متادیتاهای پست اصلی را دریافت کنید
$original_post_meta = get_post_meta($original_post_id);

// اطلاعات پست جدید را آماده کنید (بدون شناسه)
$new_post_data = array(
    'post_title' => $original_post->post_title,
    'post_content' => $original_post->post_content,
    'post_status' => 'draft', // وضعیت مورد نظر (مثلاً draft یا publish)
    'post_type' => $original_post->post_type,
);

// پست جدید را ایجاد کنید
$new_post_id = wp_insert_post($new_post_data);

// متادیتاهای پست جدید را تنظیم کنید
foreach ($original_post_meta as $meta_key => $meta_values) {
    foreach ($meta_values as $meta_value) {
        add_post_meta($new_post_id, $meta_key, $meta_value);
    }
}

// نشانگر به شناسه پست جدید منتقل شود
echo "پست جدید ایجاد شد با شناسه: $new_post_id";

این کد به شما اجازه می‌دهد یک کپی از پست مورد نظر با تمام متادیتاها ایجاد کنید. اطلاعات پست اصلی را با استفاده از تابع get_post() دریافت کنی و تمام متادیتاها را با get_post_meta() دریافت کنی و روی پست جدید تنظیم می‌کنه.

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


oss_vahid
تخصص : wordpress developer
@ossvahid 7 ماه پیش مطرح شد
0

سلام مشکلتون رو متوجه نشدم دقیق توضیح بدید میخاید چیکار کنید


احسانم
تخصص : توسعه دهنده وب
@iehsan 7 ماه پیش مطرح شد
0

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


محمد حسینی
@lu1362 7 ماه پیش مطرح شد
0

پست متا ها رو دستی ساختی یا با افزونه ؟


احسانم
تخصص : توسعه دهنده وب
@iehsan 7 ماه پیش آپدیت شد
0

@lu1362
این قالبی که استفاده میکنم از این پلاگین استفاده کرده
Classified Listing

یکی از بخش هایی که این پلاگین اضافه میکنه همین قسمتیه که توی تصویر گذاشتم


مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 7 ماه پیش مطرح شد
1

سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨

برای انجام عملیات کپی پست به همراه متادیتاها (Post Meta) در وردپرس، می‌تونی اینکارو بکنی

**روش 1: افزونه‌های رایگان و متن‌باز

برخی افزونه‌های متن‌باز و رایگان وجود دارن از افزونه‌هایی مانند "Duplicate Post" یا "Duplicate Page and Post" می‌تونی توی مخزن خود وردپرس استفاده کنید. این افزونه‌ها پس از نصب و فعال‌سازی بهت امکان کپی کردن پست با تمام متادیتاهای اون رو میدن

افزونه "Duplicate Post" یا "Duplicate Page and Post"
پس از فعال‌سازی افزونه، در لیست پست‌ها و صفحات، گزینه "Duplicate" یا "کپی" برای هر پست به نمایشدر میاد. با کلیک بر روی این گزینه، یک نسخه کپی از پست با تمام متادیتاها ایجاد می‌شه.

روش 2: استفاده از کد سفارشی:

در صورتی که می‌خوای کد سفارشی بنویسی تا پست‌ها را به همراه متادیتاها کپی کنه، می‌تونی از تابع‌های وردپرس برای این کار استفاده کنی. به عنوان مثال، می‌توانید از تابع wp_insert_post() و get_post_meta() برای ایجاد پست جدید با متادیتاها استفاده کنی

این کد مثالی از چگونگی کپی کردن یک پست با تمام متادیتاها هستش

// شناسه پست اصلی که می‌خواهید کپی کنید
$original_post_id = 123;

// اطلاعات پست اصلی را دریافت کنید
$original_post = get_post($original_post_id);

// تمام متادیتاهای پست اصلی را دریافت کنید
$original_post_meta = get_post_meta($original_post_id);

// اطلاعات پست جدید را آماده کنید (بدون شناسه)
$new_post_data = array(
    'post_title' => $original_post->post_title,
    'post_content' => $original_post->post_content,
    'post_status' => 'draft', // وضعیت مورد نظر (مثلاً draft یا publish)
    'post_type' => $original_post->post_type,
);

// پست جدید را ایجاد کنید
$new_post_id = wp_insert_post($new_post_data);

// متادیتاهای پست جدید را تنظیم کنید
foreach ($original_post_meta as $meta_key => $meta_values) {
    foreach ($meta_values as $meta_value) {
        add_post_meta($new_post_id, $meta_key, $meta_value);
    }
}

// نشانگر به شناسه پست جدید منتقل شود
echo "پست جدید ایجاد شد با شناسه: $new_post_id";

این کد به شما اجازه می‌دهد یک کپی از پست مورد نظر با تمام متادیتاها ایجاد کنید. اطلاعات پست اصلی را با استفاده از تابع get_post() دریافت کنی و تمام متادیتاها را با get_post_meta() دریافت کنی و روی پست جدید تنظیم می‌کنه.

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


احسانم
تخصص : توسعه دهنده وب
@iehsan 7 ماه پیش مطرح شد
0

دمت گرم مهدی جان🌹🌹


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام