Ali#

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

11 پست در این موضوع قرار دارد

سلام.

می خواهم هنگامی که مطالب از قسمت 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 است که فقط یک آی دی را وارد می کند. ولی راه حل را پیدا نمی کنم.

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

 

 

 

 

 

 

 

 

 

 

0

به اشتراک گذاری این پست


لینک به پست
در 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 );
}
}
}

 

 

1

به اشتراک گذاری این پست


لینک به پست
در 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

عجله داشتم.

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

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

0

به اشتراک گذاری این پست


لینک به پست

به اشتراک گذاری این پست


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

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

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

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

 

0

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

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

اکشن درسته 

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

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

1

به اشتراک گذاری این پست


لینک به پست
در 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).

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

0

به اشتراک گذاری این پست


لینک به پست

برای کار با آژاکس که خودش یک مثال کامل زده (کدهای مربوط به آژاکسش جی کوئریند نه 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/

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

 

1

به اشتراک گذاری این پست


لینک به پست
نقل قول

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

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

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط ali.kashanikhah
      سلام و وقت بخیر. یک پروژه دارم که توضیحات به پیوست ارائه شده. ممنون میشم چنانچه تمایل به همکاری دارید پیام دهید
      برای درک بهتر 1 فایل صوتی در لینک زیر آپلود کردم که ممنون میشم گوش کنید.
      نمونه برای دیزاین و عملکرد تقریبی در فرانت:
      https://www.zhaket.com/web/digikala-slider-plugin
      لینک ویس:
      http://uupload.ir/view/z7dx_ali.rar/
      کلیات همینه فقط ممکنه تو کار ریزه کاری ظاهریو ازتون بخوام تغییر بدین تازه اونم تو داشبودر وگرنه سمت فرانت که نمونه دیجیکالایشو که میخواهیم خدمتتون ارسال کردم و روز و درصد مشخص میشه (روز که دستی مشخص میشه و درصد سیستمی که البته درصد نمایشی است و قابل تغییر نیست) کالا هایی هم که که شامل این قضیه میشه پکیج هایی هستند که تو سایت درست میشه فقط این پکیج ها ممکنه در سایت برای فروش نمایش داده نشوند و فقط بخواهیم در این پلاگین نمایش داده شود مورد پایان روز تخفیف رو هم که خدمتتون اعلام کردم.
      چند نکته:
      - پکیج هایی که از داخل پلاگین انتخاب می شوند فقط در آن کروسل قابل نمایش هستند چرا که ممکن است محصولاتی به صورت پکیج برای فروش گذاشته شود که نخواهیم شامل این کروسل باشند (عمومی باشند)
      - این فرآیند شامل محصولات غیرپکیجی هم خواهد بود
      - تعداد محصولاتی که در این کروسل نمایش داده می شوند باید قابل تنظیم باشند
      - محصولات از نظر تعدادی هم باید تفکیک شوند به این شکل که مثلا موجودی کل 10 عدد است ولی ما 3 عدد آن را در این پلاگین قرار می دهیم (رزرو می کنیم) وچنانچه به صورت عادی فروخته شد از موجودی اصلی کثر می شود ولی اگر به صورت سوری فروخته شد (بعد از مدت معین فردی آن را نخرد و سیستم خودش آن را فروخته شد در نظر بگیر) بعد از مدت معین که در بند بعدی توضیح دادم به موجودی اصلی باز می گردد.
      - نمایش محصول به تعداد روز بعد از فروش با لیبل " با x درصد تخفیف فروخته شد " (درصدری که اعمال می شود) باید قابل تنظیم باشد (البته بهتر است لیبل هم قابل تغییر باشد)
      باز هم اگر سوال هست بفرمایید در خدمتم
    • توسط sarah
      سلام . اگه یه عده ای بخان شرکت پرداخت یار (واسط پرداخت)تاسیس کنن - مثه شرکت آیدی پی مثلن - اون گروه لازمه که در چه حوزه هایی از برنامه نویسی و نرم افزاری و سخت افزار و ... دانش  و تجربه داشته باشن کلن سوالم اینه یه همچین شرکتی چطوری میتونه ایجاد شه سرچ که میکردم فقط در مورد مراحل مجوزش مطلب بود اما هیچی در مورد این نبود که باید چجوری این کار رو انجام داد ؟ کسی میتونه راهنمایی ام بده ؟
    • توسط david7222222222
      چطور میتونم تقویم یک افزونه ی وردپرس رو شمسی کنم ؟ از تقویم این افزونه برای حسابداری و ثبت قرار ملاقات استفاده میشه و باید در نمایش هم کاملا شمسی باشه.لطفا کمک کنید ممنون
    • توسط armin19901369
       با سلام و احترام
      یک وبسایت بر مبنای وردپرس دارم. پروژه در رابطه با ارتقا افزونه های وردپرسی هست و شامل دو قسمت زیر هست:
      ۱-در وبسایت از سیستم امتیازدهی با افزونه mycred رو دارم. هوک های پیش فرض افزونه شامل گراویتی فرم هست و بر مبنای پر کردن هر فرم به کاربر امتیاز میده.
      بعد از پر کردن فرم ها با استفاده از افزونه گراویتی فلو روندهایی برای فرم ها انجام میشه. می خوام یه هوک توی mycred تعریف بشه که در صورتی که یک روند برای فرم انجام شد به کاربر امتیاز بده. یعنی یه هوک برای گراویتی فلو تو mycred تعریف بشه.
      ۲-. افزونه mycred برای referal هایی که منجر به ثبت نام کاربر بشه به کاربر ارجاع دهنده امتیاز میده. این در صورتی کار می کنه که از ثبت نام پیش فرض وردپرس استفاده بشه.ثبت نام در حال حاضر از طریق افزونه digits و با استفاده از شماره موبایل انجام میشه
      می خوام با ثبت نام کاربر از طریق digits هم امتیاز ارجاع داده بشه.
      ممنون میشم هزینه و زمان رو برای انجام هر قسمت پروژه بفرمایید.
    • توسط Reka
       

        برای نوشتن یک متن در فایل از تابع fwrite() در زبان PHP استفاده میشود.

      این تابع دو مقدار ورودی دریافت میکند، مقدار ورودی اول یک شی از نوع File handler (هندلر) بوده و مقدار دوم رشته ای (String) که میخواهیم درون فایل نوشته شود را مشخص میکند.
       
      $txt = "This is a test text!"; fwrite($file, $txt); نوشتن درون فایل با تابع fwrite

      میتوانیم تابع fwrite() را روی یک فایل باز شده چندین بار صدا بزنیم و در ادامه اطلاعات نوشته شده قبلی، اطلاعات دیگری بنویسیم. برای مثال قطعه کد زیر یک متن را در دو خط پشت سر هم درون فایل مینویسد.
      $txt = "This is a test text!"; fwrite($file, txt); fwrite($file, "\n"); fwrite($file, $txt); $txt = "This is a test text!"; fwrite($file, txt); fwrite($file, "\n"); fwrite($file, $txt); در پایان کار با فایل، می بایست فایل باز شده را ببندیم و مشخص کنیم که دیگر با این فایل کاری نداریم. در صورتی که عملیات بستن فایل انجام نشود، تغییرات انجام شده روی فایل اعمال نخواهد شد.

      برای بستن فایل باز شده از تابع fclose() استفاده میکنیم که به عنوان تنها ورودی، متغیر مربوط به File Handler را ورودی میگیرد.
      fclose($file); اکنون فایل options.ini ما محتوایی مشابه زیر خواهد داشت.
      This is a test text! This is a test text!