mani261 5 ارسال شده در آبان 96 گزارش بازنشر ارسال شده در آبان 96 سلام وردپرسیهای عزیز؛ من قصد دارم برای یک نوع پست سفارشی که کاربران با نقش مشترک ارسال میکنند امکان اختصاص نام کاربر به عنوان نویسنده رو بگذارم. وردپرس توی پیشخوان ستون Author نام فرستنده رو درست نشون میده اما در حالت ویرایش فقط نام نویسندگان مدیر سایت دیده میشه. از این سایت کد زیر رو پیدا کردم که با تغییر پارامتر، تمام کاربران رو در بخش ویرایش نشون میده منتها مشکل اینه که به صورت پیشفرض، کاربر نویسنده اصلی انتخاب نمیشه و با هر بار ویرایش مجدد نام نویسنده به اول فهرست (یا ادمین) تغییر پیدا میکنه. چه جوری post_author رو انتخاب کنم که هر بار تغییر نکنه؟ add_filter('wp_dropdown_users', 'MySwitchUser'); function MySwitchUser($output) { //global $post is available here, hence you can check for the post type here $users = get_users(); $output = "<select id=\"post_author_override\" name=\"post_author_override\" class=\"\">"; //Leave the admin in the list $output .= "<option value=\"1\">Admin</option>"; foreach($users as $user) { $sel = ($post->post_author == $user->ID)?"selected='selected'":''; $output .= '<option value="'.$user->ID.'"'.$sel.'>'.$user->display_name.'</option>'; } $output .= "</select>"; return $output; } نقل قول لینک به ارسال
فرحان 997 ارسال شده در آبان 96 گزارش بازنشر ارسال شده در آبان 96 سلام. یه نگاهی به این لینک بندازید: https://wordpress.stackexchange.com/questions/59314/how-do-i-change-the-author-of-a-custom-post-type اولین پاسخی که دادن اگر اون کد رو اضافه کنید به قسمتی که کاستوم پستتون رو تعریف کردین، بالای صفحه لیستی میاد که میتونید نویسنده رو انتخاب کنید. مشکل کد خودتون فکر می کنم این باشه که زمان ذخیره مطلب نویسنده اون تغییر نکرده به همین خاطر هر بار که صفحه رو رفرش می کنید بر میگرده به اولین گزینه توی لیست. برای رفعش باید به صورت دستی با هوک به زمان ذخیره مطلب مقدار متاباکستون رو چک کنید و هرچی بود بزارید به عنوان ای دی نویسنده مطلب. 1 نقل قول لینک به ارسال
mani261 5 ارسال شده در آبان 96 مالک گزارش بازنشر ارسال شده در آبان 96 ممنون از پاسخ. در مورد اول پشتیبانی از author در کد داخل لینک وجود دارد. مشکل این است که فقط مدیران سایت رالیست میکند نه کاربری که مطلب را ارسال کرده. در مورد ایراد کد فعلی، متوجه راهحلتون نشدم. میشه لطفاً کلیدواژهای برای سرچ مثالش بگید که به پاسخ برسم؟ نقل قول لینک به ارسال
mani261 5 ارسال شده در آبان 96 مالک گزارش بازنشر ارسال شده در آبان 96 (ویرایش شده) مشکل با این قطعه کد که کسی در همون لینک اولی پیشنهاد کرده بود حل شد. فقط من آرگومان get_users رو خالی گذاشتم که همهٔ نقشهای عضو سایت رو بخونه: add_filter('wp_dropdown_users', 'MySwitchUser'); function MySwitchUser() { global $post; // remove if not needed //global $post is available here, hence you can check for the post type here $users = get_users(); echo'<select id="post_author_override" name="post_author_override" class="">'; echo'<option value="1">Admin</option>'; foreach($users as $user) { echo '<option value="'.$user->ID.'"'; if ($post->post_author == $user->ID){ echo 'selected="selected"'; } echo'>'; echo $user->display_name.'</option>'; } echo'</select>'; } دستور شرطی باعث میشه کاربر نویسنده رو بفهمه و انتخاب کنه که در کد اول ایراد داشت و درست کار نمیکرد. ویرایش شده آبان 96 توسط mani261 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .