Site Loader
پنل کاربران
author-base

نامک , بخشی میانی از URL نویسنده است , که به طور پیش‌فرض آن / author/ است.

به دلایلی ، برخلاف نوشته ها یا پایگاه‌های برچسب ، WordPress یک گزینه برای تغییر آن در صفحه Screen ( صفحه مدیریت ) به ما نمی‌دهد ، بنابراین باید راه دیگری بیابیم .

در این مقاله ، من دو رویکرد ممکن برای تغییر نامک نویسنده را به شما نشان خواهم داد . در قسمت اول ما پایه جدید را در کد منبع خود تعریف خواهیم کرد . سپس با دادن انعطاف‌پذیری بیشتر ، این تغییر را به صورت پویا از طریق یک میدان ورودی در صفحه Permalinks انجام خواهیم داد .

نشانی اینترنتی را باز کنید

هنگامی که بحث در مورد تغییر نامک نویسنده صورت می‌گیرد , ما باید متغیر جهانی بازنویسی شده wp $ را اصلاح کنیم . یک نمونه واحد از طبقه WP _ است , که WordPress از آن برای مدیریت قواعد نویسی اینترنتی استفاده می‌کند . به لطف این محل کار WordPress این منطقه به نظر می‌رسد که این منطقه دارای بخش بسیار مطلوبی از SEO است .

کد # ۱ – تغییر ثابت نامک نویسنده

/**
 * Custom Author Base
 *
 * @return void
 */
function lwp_2610_custom_author_base() {
    global $wp_rewrite;
    $wp_rewrite->author_base = 'user';
}
add_action( 'init', 'lwp_2610_custom_author_base' );

در کد بالا , ما به سادگی یک رشته را به ویژگی اصلی شی از نو بازنویسی می‌کنیم , به عنوان مثال ” کاربر ” یا ” پروفایل ” . به یاد داشته باشید, آن بخشی از یک URL است , بنابراین از هیچ کاراکتر یا فضای ویژه‌ای استفاده نکنید .

بیایید ببینیم بعد از اعمال کد چه اتفاقی می‌افتد و سعی می‌کنیم نشانی اینترنتی نویسنده جدید را به دست آوریم . ما یک اشتباه پیدا می‌کنیم . برای اینکه این تغییر دائمی شود , باید ساختار permalink را بازسازی کنیم . روی صفحه نمایشگر Permalinks کلیک کرده و روی دکمه Save کلیک کنید .

توجه : ما می‌توانیم با فراخوانی سیستم بازنویسی مجدد قواعد ( ) ساختار permalink را بازسازی کنیم . این عمل بسیار خطر است ، پس باید فقط یک‌بار آن را صدا بزنید .

همانطور که نشان‌داده‌شده , این روش شامل ۲ مرحله است : ایجاد خود کد و سپس بازسازی ساختار permalink . بهتر نیست فقط در صفحه مدیریت این کار را انجام دهید؟ بسیار خوب . بیایید code را گسترش دهیم .

کد # ۲ – تغییر پویای نامک نویسنده:

قسمت‌های زیر به کاربران اجازه می‌دهد تا خود از طریق صفحه مدیریت Permalinks را تغییر دهند . این یک روش راحت‌تر برای اصلاح است .

/**
 * Rewrite author base to custom
 *
 * @return void
 */
function lwp_2610_author_base_rewrite() {
    global $wp_rewrite;
    $author_base_db = get_option( 'lwp_author_base' );
    if ( !empty( $author_base_db ) ) {
        $wp_rewrite->author_base = $author_base_db;
    }
}

add_action( 'init', 'lwp_2610_author_base_rewrite' );

/**
 * Render textinput for Author base
 * Callback for the add_settings_function()
 *
 * @return void
 */
function lwp_2610_author_base_render_field() {
    global $wp_rewrite;
    printf(
        '<input name="lwp_author_base" id="lwp_author_base" type="text" value="%s" class="regular-text code">',
        esc_attr( $wp_rewrite->author_base )
    );
}

/**
 * Add a setting field for Author Base to the "Optional" Section
 * of the Permalinks Page
 *
 * @return void
 */
function lwp_2610_author_base_add_settings_field() {
    add_settings_field(
        'lwp_author_base',
        esc_html__( 'Author base' ),
        'lwp_2610_author_base_render_field',
        'permalink',
        'optional',
        array( 'label_for' => 'lwp_uthor_base' )
    );
}

add_action( 'admin_init', 'lwp_2610_author_base_add_settings_field' );

/**
 * Sanitize and save the given Author Base value to the database
 *
 * @return void
 */
function lwp_2610_author_base_update() {
    $author_base_db = get_option( 'lwp_author_base' );

    if ( isset( $_POST['lwp_author_base'] ) &&
        isset( $_POST['permalink_structure'] ) &&
        check_admin_referer( 'update-permalink' )
    ) {
        $author_base = sanitize_title( $_POST['lwp_author_base'] );

        if ( empty( $author_base ) ) {
            add_settings_error(
                'lwp_author_base',
                'lwp_author_base',
                esc_html__( 'Invalid Author Base.' ),
                'error'
            );
        } elseif ( $author_base_db != $author_base ) {
            update_option( 'lwp_author_base', $author_base );
        }

    }
}

add_action( 'admin_init', 'lwp_2610_author_base_update' );

در کد بالا , ما از تابع تنظیمات تنظیمات ( ) تنظیمات API برای ایجاد میدان ورودی استفاده می‌کنیم . تابع update _ base _ ۲۶۱۰ _ ۲۶۱۰ ( که به مدیریت اجرایی init متصل است ) به روز رسانی ‌ها رسیدگی می‌کند . به طور معمول , تابع API ( ) API برای این کار مسئول است , اما روی صفحه Permalinks کار نمی‌کند . این کار به طور کامل کار خود را در صفحات دیگر , مانند عمومی یا مطالعه , اما نه در اینجا انجام می‌دهد . تابع سفارشی ما یک workaround برای این مساله است . این کار هر کاری را انجام می‌دهد که تابع ثبت ( ) انجام شود , از جمله کنترل خطا , sanitizing و ذخیره داده در جدول پایگاه‌داده‌های گزینه‌ها . به طور مشابه با رویکرد اول , ماهیت کد برای اصلاح شی جهانی بازنویسی شده wp است . اما این بار نامک نویسنده برگرفته از پایگاه‌داده است .

پس از استفاده از این قسمت ، یک ورودی متن جدید در پایین بخش گزینه‌های صفحه Permalinks ظاهر می‌شود .

base

نویسنده مطلب: پشتیبان وردپرس

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *