miraziz

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

6 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

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

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

ویرایش شده در توسط miraziz
0

به اشتراک گذاری این پست


لینک به پست

من در وب این کد را پیدا کردم که هم عبارت 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;
}
	

 

0

به اشتراک گذاری این پست


لینک به پست

سلام

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

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

 

0

به اشتراک گذاری این پست


لینک به پست
در 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 بود، متاسفانه کار نکرد.

0

به اشتراک گذاری این پست


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

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

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

1

به اشتراک گذاری این پست


لینک به پست
در 19 ساعت قبل، karamusic گفته است :

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری