SHET32

تغییر آدرس Custom Post Type در وردپرس با افزونه رایگان و کد

تغییر آدرس Custom Post Type در وردپرس با افزونه رایگان و کد

اگه آدرس یک Custom Post Type یا «نوع نوشته سفارشی» با ساختار سایتتون جور درنمیاد، می‌تونید نامک پایه و شکل پیوند یکتاش رو عوض کنید. وردپرس از راه کد این امکان رو بهتون می‌ده، ولی توی پیشخوان گزینه‌ای عمومی برای تغییر آدرس همه پست تایپ‌های سفارشی نمی‌بینید. برای همین، اول کار با یک افزونه رایگان رو یاد می‌گیریم و بعد سراغ روش داخلی وردپرس با کد می‌ریم.

اگه محتوایی قبلاً منتشر شده، تغییر آدرس بدون ریدایرکت 301 ممکنه کاربر و موتور جستجو رو به صفحه 404 بفرسته. پس فقط ساختن آدرس جدید کافی نیست و باید آدرس‌های قدیمی رو هم به مقصد درست هدایت کنید. آدرس خواناتر مفیده، ولی قرار نیست به‌تنهایی رتبه یا ترافیک سایتتون رو بیشتر کنه.

تغییر آدرس Custom Post Type در وردپرس

Custom Post Type یا «نوع نوشته سفارشی»، نوعی محتواست که جدا از نوشته و برگه ساخته می‌شه؛ مثل فیلم، دوره آموزشی یا نمونه‌کار. اگه این مفهوم براتون تازه‌ست، اول راهنمای پست تایپ سفارشی در وردپرس رو بخونید.

فرض کنید پست تایپی به اسم Movies دارید. آدرس یکی از فیلم‌ها ممکنه این شکلی باشه:

https://example.com/movies/the-force-awakens/

توی این مثال، moviesنامک پایه‌ست؛ یعنی همون بخش ثابتی که توی آدرس دیده می‌شه. اگه آرشیو این پست تایپ فعال باشه، صفحه آرشیوش هم معمولاً چنین آدرسی داره:

https://example.com/movies/

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

آیا خود وردپرس این قابلیت رو داره؟

بله. موقع ثبت پست تایپ سفارشی، وردپرس گزینه rewrite رو در تابع register_post_type() در اختیارتون می‌ذاره. توسعه‌دهنده قالب یا افزونه با همین گزینه می‌تونه نامک پایه رو مشخص کنه. پس اگه فقط می‌خواید نامک رو عوض کنید، از نظر فنی نیازی به نصب افزونه ندارید.

ولی صفحه «تنظیمات ← پیوندهای یکتا» فقط ساختار عمومی نوشته‌ها رو مدیریت می‌کنه و برای تک‌تک پست تایپ‌های سفارشی کادر جدا نداره. اگه با کدنویسی راحت نیستید یا می‌خواید ساختارهایی مثل سال، شناسه یا دسته‌بندی سفارشی رو از پیشخوان تنظیم کنید، افزونه رایگان کار رو راحت‌تر می‌کنه.

قبل از تغییر آدرس چه نکاتی رو بررسی کنیم؟

  • از سایتتون نسخه پشتیبان بگیرید.
  • ببینید پست تایپ رو قالب، افزونه یا کد اختصاصی ساخته؛ چون بعضی ابزارها تنظیم جداگانه‌ای برای نامک دارن.
  • آدرس چند محتوای فعلی رو جایی یادداشت کنید تا بعد از تغییر، ریدایرکت و خطای 404 رو آزمایش کنید.
  • اگه محتوا قبلاً منتشر شده، برای آدرس‌های قدیمی ریدایرکت 301 بسازید.
  • بهتره تغییر رو اول روی سایت آزمایشی انجام بدید، مخصوصاً اگه فروشگاه یا سایت پربازدید دارید.

اگه برای انتخاب ساختار عمومی آدرس‌ها مطمئن نیستید، راهنمای بهترین ساختار پیوند یکتا در وردپرس کمکتون می‌کنه.

تغییر پیوند یکتا با افزونه رایگان

توی این روش از افزونه رایگان Custom Post Type Permalinks استفاده می‌کنیم. این افزونه از مخزن رسمی وردپرس نصب می‌شه و بهتون اجازه می‌ده ساختار پیوند یکتای پست تایپ‌های سفارشی رو تغییر بدید.

برای نصب افزونه، وارد «افزونه‌ها ← افزودن افزونه تازه» بشید و اسمش رو جستجو کنید. بعد روی «هم‌اکنون نصب نمایید» بزنید و وقتی نصب تموم شد، «فعال نمایید» رو انتخاب کنید. اگه اولین باره افزونه نصب می‌کنید، راهنمای نصب افزونه در وردپرس رو ببینید.

پلاگین Custom Post Type Permalinks
پلاگین Custom Post Type Permalinks

تنظیم ساختار پیوند یکتا در افزونه

بعد از فعال‌سازی، به «تنظیمات ← پیوندهای یکتا» برید. توی این صفحه، بخش تنظیمات پیوند یکتای پست تایپ‌های سفارشی رو پیدا کنید. اسم دقیق گزینه‌ها به پست تایپ‌هایی بستگی داره که روی سایتتون فعال هستن.

تغییر آدرس Custom Post Type در وردپرس با افزونه رایگان و کد
تنظیم ساختار پیوند یکتا در افزونه

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

نمایش شناسه نوشته در آدرس

اگه می‌خواید شناسه عددی هر نوشته توی آدرس دیده بشه، باید از برچسب درست %post_id% استفاده کنید:

/%post_id%/

نتیجه ممکنه شبیه این نمونه بشه:

https://example.com/movies/133/

شناسه فقط یک عدده و معمولاً چیزی درباره موضوع محتوا به کاربر نمی‌گه. برای همین، استفاده از نام نوشته توی بیشتر سایت‌ها انتخاب خواناتریه.

نمایش سال و نام نوشته در آدرس

اگه می‌خواید سال انتشار و نامک نوشته کنار هم توی آدرس بیان، این ساختار رو وارد کنید:

/%year%/%postname%/

برچسب درست برای نام نوشته %postname% هست. عبارت %post_name% جزو برچسب‌های استاندارد پیوند یکتای وردپرس نیست. خروجی این ساختار ممکنه چنین شکلی داشته باشه:

https://example.com/movies/2016/the-force-awakens/

اضافه کردن طبقه‌بندی سفارشی به آدرس

Taxonomy یا «طبقه‌بندی»، راهی برای گروه‌بندی محتواست؛ دسته و برچسب هم دو نمونه آشنای اون هستن. فرض کنید برای پست تایپ Movies یک طبقه‌بندی سفارشی به اسم genre دارید. برای آوردن ژانر و نام نوشته توی آدرس می‌تونید این ساختار رو امتحان کنید:

/%genre%/%postname%/

اگه افزونه و طبقه‌بندی سایتتون از این ساختار پشتیبانی کنن، نتیجه شبیه نمونه زیر می‌شه:

https://example.com/movies/sci-fi/the-force-awakens/

اسمی که بین علامت‌های درصد می‌نویسید باید دقیقاً همون نام ثبت‌شده طبقه‌بندی باشه. اگه %genre% بدون تغییر توی آدرس باقی موند یا با صفحه 404 روبه‌رو شدید، نام فنی طبقه‌بندی رو از سازنده پست تایپ بررسی کنید.

ذخیره و آزمایش آدرس‌ها

وقتی ساختار رو وارد کردید، روی «ذخیره تغییرات» بزنید. با این کار، قوانین بازنویسی آدرس وردپرس هم تازه می‌شن. بعد یک محتوای قدیمی و یک محتوای تازه از همون پست تایپ رو باز کنید و ببینید هر دو بدون خطای 404 نمایش داده می‌شن یا نه.

اسلش اول و آخر ساختار رو هم فراموش نکنید؛ مثلاً /%postname%/. بعد از ذخیره، لینک‌های منو، دکمه‌ها و نوشته‌هایی رو هم بررسی کنید که قبلاً به آدرس قدیمی وصل بودن.

تغییر نامک پایه با قابلیت داخلی وردپرس

اگه پست تایپ با کد اختصاصی ثبت شده، می‌تونید مقدار slug رو داخل گزینه rewrite عوض کنید. نمونه ساده زیر نامک پایه رو روی films می‌ذاره:

register_post_type( 'movie', array(
    'public'      => true,
    'has_archive' => true,
    'rewrite'     => array(
        'slug'       => 'films',
        'with_front' => false,
    ),
) );

بعد از این تغییر، آدرس ممکنه به شکل زیر دربیاد:

https://example.com/films/the-force-awakens/

این کد فقط یک نمونه‌ست، پس ثبت کامل و فعلی پست تایپتون رو بدون بررسی با اون جایگزین نکنید. اگه قالب یا افزونه پست تایپ رو ساخته، فایل اصلی اون رو مستقیم دست‌کاری نکنید؛ چون به‌روزرسانی بعدی ممکنه تغییرتون رو پاک کنه. بهتره از تنظیمات خود ابزار، چایلدتم یا افزونه اختصاصی سایتتون کمک بگیرید.

بعد از تغییر کد، یک بار به «تنظیمات ← پیوندهای یکتا» برید و بدون عوض کردن گزینه‌ها روی «ذخیره تغییرات» بزنید. این کار قوانین آدرس‌ها رو دوباره می‌سازه.

جلوگیری از خطای 404 بعد از تغییر آدرس

اگه آدرس قبلی جایی منتشر شده یا گوگل اون رو ثبت کرده، باید با ریدایرکت 301 به آدرس تازه بفرستیدش. ریدایرکت 301 یعنی انتقال دائمی. مرورگر و موتور جستجو با دیدن این نوع ریدایرکت متوجه می‌شن که محتوا برای همیشه به نشانی جدید رفته.

برای مدیریت راحت ریدایرکت‌ها می‌تونید از افزونه رایگان Redirection کمک بگیرید. آموزش تغییر مسیر صفحات 404 در وردپرس با افزونه Redirection مراحل کار رو نشونتون می‌ده. وقتی ریدایرکت رو ساختید، آدرس قدیمی رو توی یک پنجره ناشناس باز کنید و مطمئن بشید مستقیم به محتوای جدید می‌رسید.

اگه هنوز صفحه پیدا نمی‌شه، راهنمای رفع خطای 404 در وردپرس رو بررسی کنید. کش سایت و مرورگر رو هم پاک کنید و یک بار دیگه تنظیمات پیوندهای یکتا رو ذخیره کنید.

جمع‌بندی

برای تغییر آدرس Custom Post Type دو راه دارید. اگه تنظیم از پیشخوان و ساختارهای پیشرفته‌تر رو ترجیح می‌دید، افزونه رایگان Custom Post Type Permalinks انتخاب خوبیه. اگه فقط می‌خواید نامک پایه پست تایپی رو عوض کنید که با کد ثبت شده، گزینه rewrite خود وردپرس کارتون رو راه می‌اندازه و نیازی به افزونه ندارید.

هر روشی رو که انتخاب می‌کنید، اول نسخه پشتیبان بگیرید. بعد برچسب‌های درست مثل %post_id% و %postname% رو به کار ببرید، تنظیمات پیوند یکتا رو دوباره ذخیره کنید و برای نشانی‌های قدیمی ریدایرکت 301 بسازید.

سوالات متداول

آیا برای تغییر آدرس Custom Post Type حتماً افزونه لازمه؟

نه. اگه پست تایپ با کد ثبت شده باشه، می‌تونید نامک پایه رو با گزینه rewrite در تابع register_post_type() تغییر بدید. افزونه رایگان وقتی به کارتون میاد که مدیریت راحت‌تر از پیشخوان یا ساختارهای پیشرفته‌تری می‌خواید.

با تغییر پیوند یکتا، آدرس نوشته‌های قبلی هم عوض می‌شه؟

بله، تغییر ساختار ممکنه آدرس محتوای قبلی رو هم عوض کنه. برای اینکه کاربر با خطای 404 روبه‌رو نشه، باید آدرس قدیمی رو با ریدایرکت 301 به آدرس جدید بفرستید.

نظر شما در این مورد چیه؟

  1. U20505۱۳ اردیبهشت ۱۳۹۹

    کار من رو راه انداخت 🙂

    ممنون از شما

    • تیم پشتیبانیتیم پشتیبانی۱۴ اردیبهشت ۱۳۹۹

      خوشحالیم که بهتون کمک کرده 🙂 پیروز باشید

  2. U23953۳۰ شهریور ۱۳۹۸

    علیزاده

    دیدگاه شما باید از سوی نویسنده‌ی این نوشته مورد پذیرش قرار گیرد.

    سلام
    چطور برای سایتم دسته بندی و پیوند دلخواه ایجاد کنم تا مثل پیش فرضش مرتب باشه .

    در قسمت فروشگاه بر اساس گروه sa _ کفش رو خودم ایجاد کردم اما مثل دسته بندی و پیوند دلخواه پیش فرض مثل الکترونیک مصرفی و دسته بندی هاش مرتب نشده ، ممنون می شم راهنمایی کنید .
    اینجا گیر کردم.

    • تیم پشتیبانیتیم پشتیبانی۳۰ شهریور ۱۳۹۸

      با سلام
      این مورد بستگی به قالب شما دارد

  3. کاربر مهمان۱۸ خرداد ۱۳۹۸

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

    • تیم پشتیبانیتیم پشتیبانی۱۸ خرداد ۱۳۹۸

      سلام وقت بخیر. برای اینکار باید فیلد سفارشی ایجاد کنید و لینک رو داخلش قرار بدید. همچنین کدهای قالب رو تغییر بدید تا فیلد سفارشی را نمایش دهد.

  4. U7097۱۲ مرداد ۱۳۹۷

    سلام جوابمو پیدا کردم ممنونم. در قالب گونیوز -تنظیمات قالب-تنظیمات اصلی-نمونه کارها

  5. U7097۱۲ مرداد ۱۳۹۷

    سلام وقتتون بخیر. در پوسته هایی که آیتم نمونه کار دارند، برای تغییر پیوند یکتای portfolio_item یا portfolio که بصورت sitaname.com/portfolio_item یا sitaname.com/portfolio میشه، چه راهی وجود داره؟ با سپاس

    • رضا راد۱۳ مرداد ۱۳۹۷

      سلام وقت بخیر. از همین راه می توانید تغییر دهید. اما باید کدهای قالب را ویرایش کنید. قالب هایی مثل بی تم خودشان قابلیت تغییر را دارند.

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.