rasivell 352 ارسال شده در تیر 92 گزارش بازنشر ارسال شده در تیر 92 /سلام ،من به دنبال روشي هستم كه بتونم مدت زمان اديت يه مقاله رو محدود كنم!توجه كنيد: مقاله توسط نويسنده ما نوشته ميشه ، بعد ما منتشرش ميكنيم ، ايشون مثلا بعد دو هفته ميگه بزار رنگ فلان خطو عوض كنم و دوباره مياد اون مقاله رو اديت ميكنه و به روز رساني رو ميزنه و قبلا هم منتشر شده پس ديگه مستقيم رو سايته! و نظم سايت ما بهم ريختهاگر بيايم اديت شدن پست هاي منتشر شده رو غير فعال كنيم ، بماند كه نويسنده ديگه قهر ميكنه!! ، بلكه مثلا اگر يه غلط املايي داشته باشه نميتونه دوباره بياد درستش كنه ! ولي اگه بيايم بگيم هر مقاله فقط تا 2 روز بعد انتشار اجازه اديت داشته باشه ، ايشون تو اون 2 روز مقاله اش رو چك كه كنه مشكلاتش رو هم حل ميكنه ديگه بعدها نميتونه مقاله رو اديت كنه و اينطوري مشكل ما حل شدهما به دنبال روشي هستيم كه بگيم هر مطلب منتشر شده فقط تا مثلا 48 ساعت بعد انتشار ، توسط نويسنده مطلب قابل ويرايش باشه و بعد اين مدت زمان نشه ويرايش كردحالا افزونه - كد فانگشن قالب و يا روش ديگه اي داريد لطفا بفرماييد ولي مد نظرمون اينه كه يه كدي تو فانگشن قالب اضافه كنيممتشكر كه زمان ميزاريد ....... نقل قول لینک به ارسال
isk 4447 ارسال شده در تیر 92 گزارش بازنشر ارسال شده در تیر 92 (ویرایش شده) آزمایش کنید در فانکشن:function stoppostedition_filter( $capauser, $capask, $param){global $wpdb;$post = get_post( $param[2] );if( $post->post_status == 'publish' ){ // غیر فعال کردن ویرایش پست برای نویسندهif( $capauser['author'] == 1 ){if( ( $param[0] == "edit_post") || ( $param[0] == "delete_post" ) ) {//تعیین مقدار زمان پس از انتشار پست$post_time_unix = strtotime( str_replace('-', ':', $post->post_date ) );$current_time_unix = time();$diff = $current_time_unix - $post_time_unix;$hours_after_publication = floor( $diff / 60 / 60 );// چنانچه 36 ساعت از زمان انتشار گذشته باشد امکان ویرایش و یا حذف پست نخواهد بودif( $hours_after_publication >= 36 ){foreach( (array) $capask as $capasuppr) {if ( array_key_exists($capasuppr, $capauser) ) { $capauser[$capasuppr] = 0;}}}}}}return $capauser;}add_filter('user_has_cap', 'stoppostedition_filter', 100, 3 );البته در اینجا یک مثال کامل آمده که می تونید بسته به نیازتون تغییرات ایجاد کنید:http://codex.wordpress.org/Plugin_API/Filter_Reference/user_has_cap ویرایش شده تیر 92 توسط isk 4 نقل قول لینک به ارسال
rasivell 352 ارسال شده در تیر 92 مالک گزارش بازنشر ارسال شده در تیر 92 (ویرایش شده) متشكرم ، جواب دادولي كدي كه شما داديد 100 درصد مقابل اون لينكيه كه داديد! و من كارمو راه انداختم ولي متوجه اين كد نشدم و از نظر يادگيري دركش نميكنم! كد لينكيي كه داديد دست نويسنده رو باز ميكنه و كدي كه اينجا گذاشتيد دست نويسنده رو ميبنده و عملا نقطه مقابل هم هستن! لطفا اگر امكانش هست يكي از دوستان يه توضيح كامل از كدي كه اينجا قرار داده شده بگه كه متوجه عملكردش بشيم متشكرم..پي نوشت: توي كد فوق ، ID نويسنده رو بايد وارد كنيم! حالا چطور ميتونيم بگيم مثلا هر كاربري با توانايي : نويسنده يا مدير و يا... بود اين دسترسي رو داشته باشه! منظورم اينه كه بجاي اي دي ، نام اون دسته كاربري رو بنويسم! مثلا : نويسنده يا مدير و يا.... ویرایش شده تیر 92 توسط rasivell نقل قول لینک به ارسال
Morteza 34190 ارسال شده در تیر 92 گزارش بازنشر ارسال شده در تیر 92 توی کد اول که آی دی نویسنده نیست. آی دی نوع کاربری هست. الان برای نویسنده هاست. 3 نقل قول لینک به ارسال
rasivell 352 ارسال شده در تیر 92 مالک گزارش بازنشر ارسال شده در تیر 92 اها متشكر تازه متوجه شدم ، خب از كجا بدونم هر نوع نويسنده IDش چنده!؟ نقل قول لینک به ارسال
Parsa 23463 ارسال شده در تیر 92 گزارش بازنشر ارسال شده در تیر 92 در مدیریت کاربرانبرروی ویرایش کلیک کنیدid در آدرس نمایش داده میشود 1 نقل قول لینک به ارسال
rasivell 352 ارسال شده در آبان 92 مالک گزارش بازنشر ارسال شده در آبان 92 سلام ،من اين كد رو استفاده ميكنم ، هميني كه توي پست دوم داده شده. ولي يه موردي هست!!! و اونم اينه كه اين مال اديت پست ها نيست!! اين مال همه چيه! وقتي ساعتي رو كه تايين ميكنم ، ميگذره ، ديگه نويسنده هيچ كاري ازش بر نمياد نميتونه نظراتي كه بعد اون ساعت امده رو پاسخ بده ، و.... لطفا اين كد رو صحيحش رو بهم بديد كه فقط مال اديت و حذف پست باشه! و نه چيزاي ديگه! نقل قول لینک به ارسال
Parsa 23463 ارسال شده در آبان 92 گزارش بازنشر ارسال شده در آبان 92 این رو تست کنیدبعد از 1 روزfunction restrict_editing_published_posts( $allcaps, $cap, $args ) { // Bail out if we're not asking to edit a post ... if( 'edit_post' != $args[0] // ... or user is admin || !empty( $allcaps['manage_options'] ) // ... or user already cannot edit the post || empty( $allcaps['edit_posts'] ) ) return $allcaps; // Load the post data: $post = get_post( $args[2] ); // Bail out if the post isn't published: if( 'publish' != $post->post_status ) return $allcaps; //if post is older than a day ... if( strtotime( $post->post_date ) < strtotime( '-1 day' ) ) { //Then disallow editing. $allcaps[$cap[0]] = FALSE; } return $allcaps;}add_filter( 'user_has_cap', 'restrict_editing_published_posts', 10, 3 ); 3 نقل قول لینک به ارسال
rasivell 352 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 قبل از اينكه تستش كنم پارسا جان ، يه سوال:اين محدوديتش در حد روزه ، كه من ميخوام در حد ساعتش كنم ، يعني ساعتي باشه مثلا بزنم 9 ساعت ، 3 ساعت و... نه روزمورد بعدي اينكه تعداد نويسنده هامون زياده ، و هر كدام هم توانايي خاصي دارن كه بهترين راه براش اضافه كردن ID نويسنده است ، حالا كجاي اين كد بايد اي دي رو وارد كرد!؟ نقل قول لینک به ارسال
Parsa 23463 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 میتوانید از این حالت برای تابع strtotime استفاده کنید-1 hourhttp://php.net/manual/en/function.strtotime.phpبرای دادن خصوصیت به کاربرانhttp://www.wpbeginner.com/plugins/how-to-add-additional-user-profile-fields-in-wordpress-registration/http://bavotasan.com/2009/adding-extra-fields-to-the-wordpress-user-profile/ 3 نقل قول لینک به ارسال
rasivell 352 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 (ویرایش شده) متشكرم پارسا جان ولي من پروفايل نميخوام نشون بدم! فقط ميخوام بدونم چطور بايد به اين فانگشن بگم كه به كدام نويسنده ها محدوديت بده! هر نويسنده رو چطوري بفهمونم به اين فانگشن؟ اي ديشو بدم ، اسمشو بدم و.. مثلا كد اول منو ببين ، يه قسمت داره راحت اي دي نويسنده هايي كه ميخوام محدوديت اديت داشته باشن رو وارد كردم! ولي اين چي؟؟ اين از كجا ميدونه من دارم به كدوم نوينسده محدوديت ميدم!؟و دوم اينكه ، پارسا جان اين كه با كدم من فرقي نداره ، اينم بعد اون زمان مشخص شده اجازه پاسخ دادن به نظرات رونميده!!! من براي همين گفتم كدم مشكل داره!!! ویرایش شده آذر 92 توسط rasivell نقل قول لینک به ارسال
Parsa 23463 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 کد دیگری من ندیدمباید ببینید از چه هوکی استفاده میشه غیرفعال کنیدبرای بدست آوردن شناسه کاربر میتوانید از تابع get_current_user_id استفاده کنیدو براساس این شرط قرار دهید 3 نقل قول لینک به ارسال
rasivell 352 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 چرا پارسا جان ، البته حق ميدم سرتون شلوغه... عنوان تاپيك كه مشخصه ، و دقيقا دومين پست ، كد رو ميتونيد ببينيد. و در چهارمين پست هم ميتونيد ببينيد كه من به وضوح توضيح دادم كد رو دارم و داره كار ميكنه و فقط ديگه نويسنده ها نميتونن نظر بدن و دوباره كد رو نشون دادم!با هوك ها و.... اشنايي ندارم و اصلا نميدونم چيه و بايد چيكار كنم! نابع مذكور كه براي اي دي كاربرا بوده رو هم همينطور نقل قول لینک به ارسال
Parsa 23463 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 این کد تست شده استعددهای 10 و 15 شناسه کاربر هست برای محدودیتمتغییر stf هم زمان محدودیتfunction restrict_editing_published_posts( $allcaps, $cap, $args ) {global $pagenow;if(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("edit_post",$args))) return $allcaps;$userid = get_current_user_id();if($userid == 10) $stf = '-5 day';elseif($userid == 15) $stf = '-1 hour';else return $allcaps;//$allcaps[$cap[0]] = FALSE;//return $allcaps; /* // Bail out if we're not asking to edit a post ... if( 'edit_post' != $args[0] // ... or user is admin || !empty( $allcaps['manage_options'] ) // ... or user already cannot edit the post || empty( $allcaps['edit_posts'] ) ) return $allcaps; */ // Load the post data: $post = get_post( $args[2] ); // Bail out if the post isn't published: if( 'publish' != $post->post_status ) return $allcaps; //if post is older than a day ... if( strtotime( $post->post_date ) < strtotime( $stf ) ) { //Then disallow editing. $allcaps[$cap[0]] = FALSE; } return $allcaps;}add_filter( 'user_has_cap', 'restrict_editing_published_posts', 10, 3 ); 4 نقل قول لینک به ارسال
rasivell 352 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 خیلی کارت درسته پارسا جان ،مشکل من حل شد البته یه تغیر دادم چون تعداد مدیرا زیاد بود از Switch استفاده کردم بجای IF نقل قول لینک به ارسال
montazer 126 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 با تشکر از تمامی دوستانبرای اینکه نویسنده نتونه مطلب رو پاک کنه باید چه کار کرد؟ (یعنی بعد از مدت زمان مشخص شده که ویرایش غیر فعال میشه. پاک کردن هم غیر فعال بشه.)البته با افزونه مدیریت کاربر میشه امکان پاک کردن مطلب رو از نویسنده گرفت، ولی توسط توابع چطور میشه؟ نقل قول لینک به ارسال
Parsa 23463 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 این خط روif(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("edit_post",$args)))بهif(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("delete_post",$args)))تغییر دهید 2 نقل قول لینک به ارسال
montazer 126 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 ممنون خوب با اینکار محدودیت ادیت هم باقی می مونه یا...برای اینکه هم محدودیت ادیت باشه هم محدودیت پاک کردن کد رو باید دوبار تکرار کرد یا اینکه ... نقل قول لینک به ارسال
Parsa 23463 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 شما شرط رو تغییر دهیدif(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("delete_post",$args)) || (! in_array("edit_post",$args)))http://www.php.net/manual/en/language.operators.logical.php 1 نقل قول لینک به ارسال
montazer 126 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 (ویرایش شده) بازم ممنون از لطف و وقتتاین دوتا جداگانه کار می کنن:این خط روif(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("edit_post",$args)))بهif(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("delete_post",$args)))تغییر دهیدولی وقتی با هم یکیشون می کنی:شما شرط رو تغییر دهیدif(($pagenow != "edit.php" && $pagenow != "post.php") || (! in_array("delete_post",$args)) || (! in_array("edit_post",$args)))http://www.php.net/m...ors.logical.phpهیچ کدوم عمل نمی کنه!!!شرط درسته ولی فکر کنم شاید چون هر دو ویژگی ویرایش و حذف از $args استفاده کردن به مشکل بر می خوره البته آیا شرط or برای اینجا درسته؟؟؟ چون ما می خواهیم هر دو ویژگی غیر فعال بشه!سوال دیگه اونکه عدد 3 و 10 تو خط آخر برای چیه؟ لول یوز هاست؟ ویرایش شده دی 92 توسط montazer نقل قول لینک به ارسال
Parsa 23463 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 این حالت رو تست کنیدif(($pagenow != "edit.php" && $pagenow != "post.php") || (! (in_array("delete_post",$args) || in_array("edit_post",$args))))اعداد مربوط به تابع add_filter هستمشخص کننده الویت اجرای تابعوتعداد پارامتر تابع انتسابی هست 3 نقل قول لینک به ارسال
montazer 126 ارسال شده در دی 92 گزارش بازنشر ارسال شده در دی 92 اقا حل شد. کارت درسته نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .