رفتن به مطلب

حذف نام custom post type از آدرس صفحه


lion_tik

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

سلام

چطور می تونم حذف نام custom post type از آدرس صفحه بکنم؟

یعنی دیگه اسم custom post type تو ادرس صفحه نباشه .

تو سایت های خارجی توضیح دادن ولی نمونه فارسی پیدا نکردم برای این کار کسی می تونه راهنمایی کنه؟

لینک به ارسال

سلام. توی لینک زیر دو کد داده نویسنده ی مطلب که هر دو رو میزارید توی فانکشن پوستتون و بعد توی هر دو تیکه کد عبارت race رو به اسم کاستوم پست تایپی که ساختین تغییر میدین.

http://kellenmace.com/remove-custom-post-type-slug-from-permalinks/

 

خودم تست نکردم کدش رو.

موفق باشید.

لینک به ارسال

متاسفانه برای من کار نکرد.

و هنوز اسم custom post type داخل آدرس میاد.

افزونه 

https://wordpress.org/plugins/remove-slug-from-custom-post-type/

با اینکه برای دو سال پیش ولی میاد اسم رو از آدرس حذف میکنه ولی مشکل اینجاست که دیگه وقتی پستی زده میشه داخل custom post type خطای 404 میگیره.

 

لینک به ارسال

راه حل برای دوستانی که به مشکل مشابه بر خورد کردن.

در این لینک آموزش این کار داده شده و خلاصه وار هم خودم میگم.

https://shimion.com/how-to-remove-custom-post-type-slug-from-wordpress-custom-post-type-url/

اولین چیز اینه که در کد های ساخت custom post type باید ببینید که ایا کد rewrite هست یا نه.اگر نیز که کد زیر رو بذارید اگرم هست که به کد زیر تغییرش بدید .

'rewrite'            => array( 'slug' => '' ),

بعد بازم داخل فایل کد های custom post type کد زیر رو قرار بدید فقط باید اسم custom post type خودتون رو داخل کد به جای property قرار بدید.

اسک custom post type شما در قسمت  register_post_type کد خودتون درج شده.

/**
 * Remove the slug from published post permalinks.
 */
function custom_remove_cpt_slug( $post_link, $post, $leavename ) {
 
    if ( 'property' != $post->post_type || 'publish' != $post->post_status ) {
        return $post_link;
    }
 
    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
 
    return $post_link;
}
add_filter( 'post_type_link', 'custom_remove_cpt_slug', 10, 3 );

 

و در آخر  کد زیر رو باز پایین کد بالایی که قرار دادید بذارید و باز اسم custom post type خودتون رو داخل کد به جای property قرار بدید.

 

/**
 * Some hackery to have WordPress match postname to any of our public post types
 * All of our public post types can have /post-name/ as the slug, so they better be unique across all posts
 * Typically core only accounts for posts and pages where the slug is /post-name/
 */
function custom_parse_request_tricksy( $query ) {
 
    // Only noop the main query
    if ( ! $query->is_main_query() )
        return;
 
    // Only noop our very specific rewrite rule match
    if ( 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
        return;
    }
 
    // 'name' will be set if post permalinks are just post_name, otherwise the page rule will match
    if ( ! empty( $query->query['name'] ) ) {
        $query->set( 'post_type', array( 'post', 'property', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'custom_parse_request_tricksy' );

 کار تموم شد.

حالا افزونه Custom Post Type Permalinks رو نصب کنید و پیوند یکتای مد نظر رو بش بدید و تمام.

خسته هم نباشید.

لینک به ارسال

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

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

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

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

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

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

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

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

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