رفتن به مطلب

استفاده از bulk actions در افزونه


Ali#

پست های پیشنهاد شده

سلام.

می خواهم هنگامی که مطالب از قسمت bulk actions (کارهای دسته جمعی)، ویرایش شد، به همه نوشته هایی که انتخاب شده و ویرایش شده اند یک برچسب اضافه شود.

من این کد را نوشتم ولی مشکلی که دارد این است که فقط به یک پست، برچسب را اضافه می کند در حالی که من می خواهم به همه نوشته هایی که انتخاب شده بودند اضافه کند.

این هم کد:

add_action('bulk_edit_custom_box', 'bulk_test');
function bulk_test() {
$post_ID = get_the_ID();
wp_set_post_tags($post_ID,'test',true );
}

دوستان می دانم مشکل از $post_ID است که فقط یک آی دی را وارد می کند. ولی راه حل را پیدا نمی کنم.

کسی می تواند راهنمایی کند؟

لینک به ارسال

سلام. مطالب رو که نمیشه دسته جمعی ویرایش کرد که شما بخواید بهشون هوک بزنید.

منظورتون اینه که یه بولک اکشن جدید می خواید اضاف کنید ؟

لینک به ارسال

نه. بولک اکشن جدید منظورم نیست.

ببینید منظورم از ویرایش، بعنوان مثال تغییر دسته جمعی مطالب از draft به public هست.میخوام وقتی تیک کنار مطالب خورد و از قسمت بولک اکشن این تغییری که گفتم داده شد،  به همه مطالبی که در مرحله قبل انتخاب کرده بودیم، یک برچسب اضافه شود.

 

 

 

 

 

 

 

 

 

 

لینک به ارسال
در 2 ساعت قبل، Ali# گفته است :

نه. بولک اکشن جدید منظورم نیست.

ببینید منظورم از ویرایش، بعنوان مثال تغییر دسته جمعی مطالب از draft به public هست.میخوام وقتی تیک کنار مطالب خورد و از قسمت بولک اکشن این تغییری که گفتم داده شد،  به همه مطالبی که در مرحله قبل انتخاب کرده بودیم، یک برچسب اضافه شود.

 

 

 

 

 

 

 

 

 

 

دوست عزیز لطف کن قوانین انجمن رو هم بخون و اسپم نفرست و پیام خصوصی هم نده ;کلا از ارسال اول تایپیک یک روز گذشته سئوالتون هم سئوال معمولی نیست 

add_action('bulk_edit_custom_box', 'bulk_test');
function bulk_test() {
$post_ids = ( ! empty( $_POST[ 'post_ids' ] ) ) ? $_POST[ 'post_ids' ] : array();
	if ( ! empty( $post_ids ) && is_array( $post_ids ) ) {
		foreach( $post_ids as $post_id ) {
wp_set_post_tags($post_id,'test',true );
}
}
}

 

 

لینک به ارسال
در 9 ساعت قبل، imanfakhar گفته است :

دوست عزیز لطف کن قوانین انجمن رو هم بخون و اسپم نفرست و پیام خصوصی هم نده ;کلا از ارسال اول تایپیک یک روز گذشته سئوالتون هم سئوال معمولی نیست 


add_action('bulk_edit_custom_box', 'bulk_test');
function bulk_test() {
$post_ids = ( ! empty( $_POST[ 'post_ids' ] ) ) ? $_POST[ 'post_ids' ] : array();
	if ( ! empty( $post_ids ) && is_array( $post_ids ) ) {
		foreach( $post_ids as $post_id ) {
wp_set_post_tags($post_id,'test',true );
}
}
}


 

شرمنده جناب imanfakhar

عجله داشتم.

از وقتی که گذاشتید هم ممنون.

این کد شما رو هم امتحان کردم متاسفانه باز هم کار نکرد. کمی تغییر هم دادم نتیجه نداد!

لینک به ارسال
در 3 دقیقه قبل، imanfakhar گفته است :

کار با آژاکس رو متوجه نشدم.

بعد اینجا اکشن wp_ajax_save_bulk_edit_book رو فراخوانی کرده در حالی که من bulk_edit_custom_box رو فراخوانی کردم.

فکر کنم بهمین مربوط بشه!

 

لینک به ارسال

شما باید یک مقداری رو خودتون ارسال کنید تا تابعتون بتونه بخونتش و مقدار آی دی ها را بفهمه ؟

در 11 دقیقه قبل، Ali# گفته است :

عد اینجا اکشن wp_ajax_save_bulk_edit_book رو فراخوانی کرده در حالی که من bulk_edit_custom_box رو فراخوانی کردم.

فکر کنم بهمین مربوط بشه!

شما مگه نمی خواهید همزمان با تغییر وضعیت تگهاتون رو هم بچسبونید ؟ 

اکشن درسته 

از کدکس وردپرس مرجع معتبر تری که نداریم شما باید آژاکس رو هم صدا بزنید تا آی دی های مطالب رو با متد post  براتون ارسال کنه تابعتون ورودی داشته باشه

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

لینک به ارسال
در 3 دقیقه قبل، imanfakhar گفته است :

شما باید یک مقداری رو خودتون ارسال کنید تا تابعتون بتونه بخونتش و مقدار آی دی ها را بفهمه ؟

شما مگه نمی خواهید همزمان با تغییر وضعیت تگهاتون رو هم بچسبونید ؟ 

اکشن درسته 

از کدکس وردپرس مرجع معتبر تری که نداریم شما باید آژاکس رو هم صدا بزنید تا آی دی های مطالب رو با متد post  براتون ارسال کنه تابعتون ورودی داشته باشه

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

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

در اصل کار با آژاکس رو متوجه نشدم. اون کد ها رو متوجه نشدم کجا باید فراخوانی بشه که این هوک اجرا بشه.

این که من میگم تگ اضافه بشه صرفاً یک مثال بود. در اصل میخوام با تغییر وضعیت، به هرکدام یک post_meta اضافه کنم.

در اصل:

add_action('bulk_edit_custom_box', 'bulk_test');
function bulk_test() {
$post_ids = ( ! empty( $_POST[ 'post_ids' ] ) ) ? $_POST[ 'post_ids' ] : array();
	if ( ! empty( $post_ids ) && is_array( $post_ids ) ) {
		foreach( $post_ids as $post_id ) {
		add_post_meta($post_id,$my_post_meta,$my_post_meta_content);
}
}
}

که شما تا حد زیادی مشکل رو حل کردید ($post_ids).

فقط ظاهراً همین مشکل کار با آژاکس است که این کد کار نمی کند!

لینک به ارسال

برای کار با آژاکس که خودش یک مثال کامل زده (کدهای مربوط به آژاکسش جی کوئریند نه PHP ) ولی شما نیازی بهش نداری

به اکشن save_post هوک بزن و تابعت رو اجرا کنه که یکی یکی هر مطلبی منتشر شد آی دیش رو بگیره و تابع رو براش اجرا کنه 

http://wordpress.stackexchange.com/questions/10853/how-to-get-and-edit-custom-fields-if-in-quick-edit

https://wp-types.com/forums/topic/update-a-custom-field-in-quick-edit/

http://wpdreamer.com/2012/03/manage-wordpress-posts-using-bulk-edit-and-quick-edit/

  و این ویدئو رو هم ببینید 

 

لینک به ارسال
نقل قول

منتها من مبتدی ام تو پروفایل هم وارد کردم.

مبتدی که نیستید ولی رفتید سراغ یکی از بد اداترین و کم مصرفترین اکشنهای وردپرس

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...