رفتن به مطلب

تغییر نویسنده مطلب به کاربر با نقش مشترک


پست های پیشنهاد شده

سلام وردپرسی‌های عزیز؛

من قصد دارم برای یک نوع پست سفارشی که کاربران با نقش مشترک ارسال می‌کنند امکان اختصاص نام کاربر به عنوان نویسنده رو بگذارم. وردپرس توی پیشخوان ستون 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;
}

 

لینک به ارسال

سلام. یه نگاهی به این لینک بندازید:

https://wordpress.stackexchange.com/questions/59314/how-do-i-change-the-author-of-a-custom-post-type

اولین پاسخی که دادن اگر اون کد رو اضافه کنید به قسمتی که کاستوم پستتون رو تعریف کردین، بالای صفحه لیستی میاد که میتونید نویسنده رو انتخاب کنید.

مشکل کد خودتون فکر می کنم این باشه که زمان ذخیره مطلب نویسنده اون تغییر نکرده به همین خاطر هر بار که صفحه رو رفرش می کنید بر میگرده به اولین گزینه توی لیست. برای رفعش باید به صورت دستی با هوک به زمان ذخیره مطلب مقدار متاباکستون رو چک کنید و هرچی بود بزارید به عنوان ای دی نویسنده مطلب.

 

لینک به ارسال

ممنون از پاسخ. در مورد اول پشتیبانی از author در کد داخل لینک وجود دارد. مشکل این است که فقط مدیران سایت رالیست می‌کند نه کاربری که مطلب را ارسال کرده.

در مورد ایراد کد فعلی، متوجه راه‌حلتون نشدم. می‌شه لطفاً کلیدواژه‌ای برای سرچ مثالش بگید که به پاسخ برسم؟

لینک به ارسال

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

}

دستور شرطی باعث می‌شه کاربر نویسنده رو بفهمه و انتخاب کنه که در کد اول ایراد داشت و درست کار نمی‌کرد.

ویرایش شده توسط mani261
لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...