رفتن به مطلب

حذف category از urlهای وردپرس


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

سلام دوستان.
همانطور که می‌دانید وردپرس به صورت پیشفرض کلمه‌ی category را در urlهای مربوط به دسته‌ها می‌آورد(مثال زیر) که البته می‌توان این کلمه را از تنظیمات-»پیوندهای یکتا به عبارتی دیگر تغییر داد.
mysite.com/category/news

حالا آیا امکانش است که این عبارت را از url به کلی حذف کرد(مثال زیر) و البته آدرس‌های قدیمی به صورت خودکار به آدرس جدید ریدایرکت شوند تا از نظر گوگل نیز صفحات 404 نداشته باشم؟ (روشی که بدون افزونه باشد)
mysite.com/news

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

من در وب این کد را پیدا کردم که هم عبارت category را حذف می کند و هم همه‌ی دسته‌های مادر را. برای مثال لینک زیر را
mysite.com/category/news/sport
را به لینک زیر تغییر می دهد
mysite.com/sport
ولی این مشکل را دارد که لینک جدید خطای 404 میده و محتوای دسته را نشون نمیده 

		

		
		
		
		
		
		
// Remove category base
add_filter('category_link', 'no_category_parents',1000,2);
function no_category_parents($catlink, $category_id) {
    $category = &get_category( $category_id );
    if ( is_wp_error( $category ) )
        return $category;
    $category_nicename = $category->slug;

    $catlink = trailingslashit(get_option( 'home' )) . user_trailingslashit( $category_nicename, 'category' );
    return $catlink;
}

// Add our custom category rewrite rules
add_filter('category_rewrite_rules', 'no_category_parents_rewrite_rules');
function no_category_parents_rewrite_rules($category_rewrite) {
    //print_r($category_rewrite); // For Debugging

    $category_rewrite=array();
    $categories=get_categories(array('hide_empty'=>false));
    foreach($categories as $category) {
        $category_nicename = $category->slug;
        $category_rewrite['('.$category_nicename.')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
        $category_rewrite['('.$category_nicename.')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
        $category_rewrite['('.$category_nicename.')/?$'] = 'index.php?category_name=$matches[1]';
    }
    // Redirect support from Old Category Base
    global $wp_rewrite;
    $old_base = $wp_rewrite->get_category_permastruct();
    $old_base = str_replace( '%category%', '(.+)', $old_base );
    $old_base = trim($old_base, '/');
    $category_rewrite[$old_base.'$'] = 'index.php?category_redirect=$matches[1]';

    //print_r($category_rewrite); // For Debugging
    return $category_rewrite;
}

// Add 'category_redirect' query variable
add_filter('query_vars', 'no_category_parents_query_vars');
function no_category_parents_query_vars($public_query_vars) {
    $public_query_vars[] = 'category_redirect';
    return $public_query_vars;
}
// Redirect if 'category_redirect' is set
add_filter('request', 'no_category_parents_request');
function no_category_parents_request($query_vars) {
    //print_r($query_vars); // For Debugging
    if(isset($query_vars['category_redirect'])) {
        $catlink = trailingslashit(get_option( 'home' )) . user_trailingslashit( $query_vars['category_redirect'], 'category' );
        status_header(301);
        header("Location: $catlink");
        exit();
    }
    return $query_vars;
}
	

 

لینک به ارسال

سلام

آموزش زیر رو تست کنید

https://jonnyjordan.com/blog/how-to-remove-category-from-your-urls-in-wordpress

برای ریدایرکت ها هم باید از  عبارات باقاعده در فایل htaccess کمک بگیرید

یه کدی شبیه به این

Redirect 301 /old-page-here.html http://www.yournewwebsite.com/new-page-here.html

 

لینک به ارسال
در 3 ساعت قبل، resanehwp گفته است :

سلام

آموزش زیر رو تست کنید

https://jonnyjordan.com/blog/how-to-remove-category-from-your-urls-in-wordpress

برای ریدایرکت ها هم باید از  عبارات باقاعده در فایل htaccess کمک بگیرید

یه کدی شبیه به این


Redirect 301 /old-page-here.html http://www.yournewwebsite.com/new-page-here.html

 

سلام. سپاسگذارم.
دو روش موجود در لینک که افزونه بودند و روش سوم که با استفاده از فایل htaccess بود، متاسفانه کار نکرد.

لینک به ارسال
در 13 دقیقه قبل، miraziz گفته است :

سلام. سپاسگذارم.
دو روش موجود در لینک که افزونه بودند و روش سوم که با استفاده از فایل htaccess بود، متاسفانه کار نکرد.

  تنظیمات افزونه Yoast SEO> ظاهر جستجو > طبقه بندی ها شده و آخرین گزینه یعنی: حذف پیشوند دسته‌ها را روی غیر فعال تنظیم کنید.

  • امتیاز 1
لینک به ارسال
در 19 ساعت قبل، karamusic گفته است :

  تنظیمات افزونه Yoast SEO> ظاهر جستجو > طبقه بندی ها شده و آخرین گزینه یعنی: حذف پیشوند دسته‌ها را روی غیر فعال تنظیم کنید.

سلام ممنون از راهنماییتان.

درست است. برای این منظور افزونه های دیگری هم هستند. من می‌خواستم ببینم بدون افزونه هم این امکان است. چون می‌خواستم علاوه بر عبارت category یکی از دسته‌های مادر را هم از url حذف کنم.

لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...