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

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


لینک به پست

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط ariux
      درود بر شما دوستان گرامی .
      من تکه کدی دارم که به وسلیه اون میتونم با کمک یک Api اطلاعات مربوط به فیلم و یا سریال رو در سایت خودم به نمایش بگذارم . اما درخواستی دارم که به سرانجام رسوندش با توجه به اطلاعات اندک برنامه نویسی من شدنی نیست .
      این تکه کد  . 
      if(!empty($id = get_post_meta(get_the_ID(), 'id', true))) : if(empty($imdb = get_post_meta(get_the_ID(), "_imdb_{$id}", true))) { $json = @file_get_contents('http://www.omdbapi.com/?i='.$id.'&apikey=0'); if($json !== false) { $imdb = json_decode($json, true); update_post_meta(get_the_ID(), "_imdb_{$id}", $imdb); echo $json; } } endif;  
      و درخواست / پرسش من  : میخواستم بدونم آیا راهی هست که به وسیله اون این کد تبدیل به یک هوک بشه تا با کمکش
      1- هر بار برای دریافت اطلاعات کل کد در فایل قالب ها به صورت مجزا گنجانده نشه .
      2- امکانی فراهم بشه برای نمایش اطلاعات دریافتی خارج و داخل حلقه وردپرس . 
      سپاس بابت زمانی که برای پاسخگویی صرف میکنید . 
       
       
    • توسط f.rahimi
      درود بر شما
      من در حال نوشتن یه افزونه هستم 
      فایل های مرتبط رو با این کدها میخوام در فایل اصلی افزونه بیارم تا کدهای داخل اون پوشه ها رو بخونه
      با این کد : 
      include_once book_inc_dir.'frontend.php' ; if (is_admin() ) { include_once vip_inc_dir.'backend.php' ; include_once vip_inc_dir.'ajax.php' ; include_once vip_inc_dir.'pages.php' ; }  اما بعد از سیو کردن با همچین اروری مواجه میشم :
       
       

      Warning: include_once(./inc/frontend.php): failed to open stream: No such file or directory in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 30

      Warning: include_once(): Failed opening './inc/frontend.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 30

      Warning: include_once(./inc/backend.php): failed to open stream: No such file or directory in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 33

      Warning: include_once(): Failed opening './inc/backend.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 33

      Warning: include_once(./inc/ajax.php): failed to open stream: No such file or directory in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 34

      Warning: include_once(): Failed opening './inc/ajax.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 34

      Warning: include_once(./inc/pages.php): failed to open stream: No such file or directory in C:\xampp\htdocs\wpvip\wp-content\plugins\wpvip\wpvip.php on line 35

      Warning: include_once(): Failed opening './inc/pages.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\wpvip\wp-
    • توسط Andy Murray
      با سلام ، وقت دوستان وردپرسی بخیر ! 
      دوستانی که به دنبال نمایش ستاره دار مطالب در گوگل هستین، حتما میدونید که افزونه های زیادی در این رابطه هست . من از kk Star Ratings استفاده کردم اما برای بعضی سایت ها جواب میده و برای بعضی ها هم جواب نمیده ، کسی اطلاعات دقیق تری داره که دلیلش چی هست ؟ و مشکل کار کجاست ؟ 
      به عنوان مثال برای سایت دی کیو شاپ کار نمیکنه ولی برای سئو سایت ستاره دار نمایش داده میشه . 
    • توسط masoudmosleh267
      سلام دوستان. من میخوام تو قسمت فرم ثبت نام سایتم، زمانی که کاربر یوزرنیم تکراری زد ارور بده. الان زمانی که یوزر تکراری وارد شه، فیلد ایمیل زرد میشه و صفحه همونطوری میمونه و اتفاقی رخ نمیده و کاربر نمیفهمه چی شده.
      بعد میخوام قسمت ورودی رمز عبور کاربر محدودیت حداقل 6 کاراکتر ایجاد شه که در غیر این صورت ارور بده.
      فیلد ایمیل هم اخطار بده که این ایمیل قبلا ثبت نام شده. در واقع هیج اروری نمیده. و بگه که آدرس ایمیل باید معتبر باشد و در غیر این صورت ارور بده. الان هرچی بزنم ثبت نام میشه فقط نباید تکراری باشه.
      الان یه سری ارور زیر فیلد ها تعریف کردم ولی همیشه این ارور ها هست و زمانه که فیلدی اشتباه باشه بجای اینکه ارور ظاهر شه، میره.
       
      این یه سری از کدای فایل هست:
      <form method="post" id="userRegistration">
                                          <div class="form-group">
                                              <input type="hidden"  class="referer" value="<?php echo wp_get_referer() ?: get_home_url()  ?> ">
                                          </div>
                                          <?php
                                          if(function_exists('wp_nonce_field')){
                                              echo '<div class="form-group">';
                                              wp_nonce_field('user_registration_action', 'user_registration_nonce');
                                              echo '</div>';
                                          }
                                          ?>
                                          
                                          <div class="form-group">
                                              <label for="register_username" class="control-label"><?php esc_html_e('Username', Khadamaator::NAME); ?></label>
                                              <input type="text" name="register_username" id="register_username" class="form-control username" aria-describedby="register_username_help_block">
                                              <span id="username_help_block" class="help-block">نام کاربری باید لاتین باشد.</span>
                                          </div>
                                          <div class="form-group">
                                              <label for="register_password" class="control-label"><?php esc_html_e('Password', Khadamaator::NAME); ?></label>
                                              <input type="password" name="register_password" id="register_password" class="form-control password" aria-describedby="register_password_help_block">
                                              <span id="password_help_block" class="help-block">رمز عبور باید حداقل 6 کاراکتر باشد.</span>
                                          </div>
                                          <div class="form-group">
                                              <label for="register_email" class="control-label"><?php esc_html_e('Email', Khadamaator::NAME); ?></label>
                                              <input type="text" name="register_email" id="register_email" class="form-control email" aria-describedby="register_email_help_block">
                                              <span id="email_help_block" class="help-block">هر ایمیل تنها یکبار میتواند ثبت شود.</span>
                                          </div>
                                          <button type="submit" class="btn btn-sm btn-primary" data-loading-text="<i class='fa fa-spinner fa-spin '></i> در حال ارتباط" ><?php esc_html_e('Signup', Khadamaator::NAME); ?></button>
                                      </form>
    • توسط فرهاد حسن پور
      با سلام
       
      دوستان با استفاده از کلاس wp_list_table وردپرس یک کلاس ساختم و از اون اکستندش کردم. طبق داکیومنت وردپرس جلو رفتم و متدهایی که لازم بود رو اورراید کردم و... .
      الان مشکلم در نمایش سطرهای جدول هست، دقیق تر بخوام بگم متد display کلاس wp_list_table ...
      بخش صفحه بندی رو درست نمایش میده ولی سطرها رو نه ... به تصویر زیر توجه کنید.

      مشکل از چی میتونه باشه ؟!