cancer 0 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 سلام من قصد داشتم که یک ستون به لیست مدیریت تمام پست ها (لیستی که وقتی روی تمام نوشته ها کلیک می کنین ظاهر میشه) اضافه کنم که این کارو تونستم با کد زیر انجام بدم function add_myColumn( $columns ) { return array_merge( $columns, array( 'my_column' => 'Get Post ID' )); } add_filter( 'manage_posts_columns' , 'add_myColumn' ); function display_column_content( $column, $post_id ) { if ($column == 'my_column'){ echo ' <form method="post"> <input type="hidden" name="postID" value="'.$post_id.'" /> <input type="submit" name="submit_getID" value="Get ID" class="button"> </form>'; } } add_action( 'manage_posts_custom_column' , 'display_column_content', 10, 2 ); که همینطور که در تصویر زیر هم میبینین ستون به درستی ایجاد شده من میخوام زمانی که روی هر دکمه کلیک شد، post_id اون پست رو دریافت کنم برای همین من از یک <form> استفاده کردم که زمانی که sumbit میشه با کمک یه <input type="hidden"< تونستم id پست مربوطه رو از طریق کد زیر دریافت کنم که تا اینجا هم مشکلی نداشت if(isset($_POST['postID'])){ echo $_POST['postID']; // or do something with post id } اما مشکل کار اینجاست: اون فرمی که من بالا گذاشتم که از طریق اون submit کنم برای تمام دکمه ها اعمال میشه به غیر از اولین دکمه لیست یعنی زمانی که من Inspect Element میزنم html تمام دکمه ها به صورت زیر (فرم ایجاد شده): ولی فقط برای اولین دکمه لیست به صورت زیر (بدون فرم): اگه کسی از دوستان بتونه راهنمایی کنه که چرا برای اولین دکمه فرم ایجاد نمیشه (یا حداقل بگه که توی اینترنت چی سرچ کنم) ممنون میشم نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 سلام و درود آیدی پست رو چطور نمایش میده؟ 1 نقل قول لینک به ارسال
cancer 0 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 در 1 دقیقه قبل، mehran-b گفته است : سلام و درود آیدی پست رو چطور نمایش میده؟ id پست از طریق هوک manage_posts_custom_column به تابع ارسال میشه (به عنوان پارامتر دوم): function display_column_content( $column, $post_id ) { if ($column == 'my_column'){ echo ' <form method="post"> <input type="hidden" name="postID" value="'.$post_id.'" /> <input type="submit" name="submit_getID" value="Get ID" class="button"> </form>'; } } add_action( 'manage_posts_custom_column' , 'display_column_content', 10, 2 ); بعد با استفاده از: <input type="hidden" name="postID" value="'.$post_id.'" /> submit میشه و پس از reload صفحه توسط کد زیر از طریق $_POST دریافت میشه if(isset($_POST['postID'])){ echo $_POST['postID']; // or do something with post id } که بعدش در صورت ست شدن میشه به صورت $_POST['postID'] برای مثال به عنوان آرگومان به تابع بفرستین if(isset($_POST['postID'])){ // for example, post id can be used to send an email $postObj = get_post($_POST['postID']); send_this_post_to_my_email($postObj); } اگه منظورتون چیز دیگه ای بود بگین اگه بتونم توضیح بدم نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 میخوای ایمیل بشه آیدی پست بهت یا همونجا هم کلیک شد نشون بده کارت راه میوفته؟ 1 نقل قول لینک به ارسال
cancer 0 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 نه این که نوشتم ایمیل بشه یا echo کنه صرفا مثال بود من فقط میخام که روی هر دکمه ای کلیک شد، id اون پست رو دریافت کنم و به عنوان ارگومان به یک تابع بفرستم، همین. تا اینجا هم که الان نوشتم برای تمام دکمه ها کار میکنه، فقط مشکل دکمه اول لیسته اون دکمه هایی با رنگ سبز مشخص کردم کاملا درست کار میکنن فقط همون دکمه ای که با رنگ قرمز علامت گذاشتم کار نمیکنه (چون نمیدونم چرا تگ form برای اون اضافه نمیشه) اگرم راه دیگه میدونین که میشه با کلیک بر روی دکمه ها id پست مربوطه رو بتونم بفرستم به یک تابعی، ممنون میشم بگین نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 درود مجدد یک کد برای شما آماده کردم که انشاا... با مطالعه اون کد شیوه کار رو یاد میگیرید. add_filter('manage_posts_columns', 'posts_column_id_add'); function posts_column_id_add($defaults) { $defaults['post_id'] = 'آیدی مطلب'; return $defaults; } add_action('manage_posts_custom_column', 'posts_column_id_body', 10, 2); function posts_column_id_body($column_name, $id){ if($column_name === 'post_id') { echo '<button data-post-id="'.$id.'" class="button ajax-send-post-id">دریافت آیدی</button>'; } } add_action('wp_ajax_send_post_id_by_mail', 'send_post_id_by_mail'); function send_post_id_by_mail() { $post_id = $_REQUEST['post_id']; $admin_email = get_option('admin_email'); $send = wp_mail($admin_email, 'آیدی پست', $post_id); if($send === false) wp_send_json_error(array('message' => 'مشکلی در ارسال پیام رخ داده است')); else wp_send_json_success(array('message' => 'پیام با موفقیت ارسال شد')); } add_action('load-edit.php', function() { add_action('admin_print_footer_scripts', 'post_id_send_js'); }); function post_id_send_js() { ?> <script> jQuery(".ajax-send-post-id").click(function(e) { e.preventDefault(); var post_id = jQuery(this).attr('data-post-id'); jQuery.ajax({ type: 'GET', url: '<?php echo admin_url('admin-ajax.php'); ?>', data: { 'action': 'send_post_id_by_mail', 'post_id': post_id }, dataType: 'json', success: function(result) { alert(result.data.message); } }); }); </script> <?php } خوب ابتدا که به فایل edit.php یه ستون اضافه کردیم به اسم آیدی مطلب سپس اومدیم برای هر پست توی اون ستون یه دکمه گذاشتیم با عنوان دریافت آیدی بعد با کلیک روی دریافت آیدی جی کوئری با استفاده از Ajax میاد یه اکشن Ajax ای که تعریف کردیم رو اجرا میکنه که توی تابع اون اکشن اومدیم آیدی رو ایمیل کردیم به ایمیل ادمین سایت. موفق باشید 1 نقل قول لینک به ارسال
cancer 0 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 با کمی تغییر این کد شما به نتیجه رسیدم بازم ممنونم که وقت گذاشتین نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 در 4 ساعت قبل، cancer گفته است : با کمی تغییر این کد شما به نتیجه رسیدم بازم ممنونم که وقت گذاشتین خواهش میکنم. موفق باشید نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .