מדריך: הפרדת קישורים בין עמודי התוכן ועמודי המדיה

מאת שלומי טורג'מן
8 במאי, 2020

וורדפרס היא אמנם מערכת קלה ונוחה מאד לשימוש, אך לעיתים היא פועלת באופן בלתי צפוי שיכול להקשות על ניהולה. דוגמה מצוינת לכך היא בתכונה מאד בולטת של המערכת: הענקת slug (מזהה טקסטואלי) לכל פריט שמתפרסם באתר – בין אם זה פוסט, עמוד, או קובץ מדיה. באמצעות המזהה הטקסטואלי יורכב גם ה-URL של אותו פריט. למשל, אם ניצור עמוד חדש בשם About, וורדפרס תיצור באופן אוטומטי slug חדש בשם about שיאפשר גישה לעמוד באמצעות ה-URL הבא: https://yourdomain/about. בוורדפרס מגדילים לעשות ומאפשרים לשנות את ה-slug בכל זמן על מנת שיתאים לצרכים.

אז איפה הבעיה? וורדפרס יוצרת slug גם לקבצי מדיה. כל תמונה ותמונה שמעלים לאתר מקבלת slug משלה, שנקבע לפי שמה. למשל, אם נעלה לאתר את התמונה about.jpg, וורדפרס תיצור את העמוד https://yourdomain/about שיציג את התמונה. מזהים את הבעיה? אם נעלה לאתר תמונה בשם about.jpg ואז נרצה לפתוח גם עמוד בשם About, תהיה כאן התנגשות: שני הפריטים יבקשו לקבל את אותו slug, אך זה לא אפשרי כמובן. במקרה שכזה, וורדפרס תוסיף את הספרה 2 ל-slug של הפריט שהתווסף מאוחר יותר מבין השניים.

ההתנהגות הזו תמיד תחייב אותנו לבצע תכנון מקדים או לבצע מחיקות כדי "לשחרר" slug שרצינו להשתמש בו אך נתפס על ידי תמונה, מכיוון שבניגוד ל-slug של פוסט או עמוד, את המזהה הטקסטואלי של קבצי המדיה אי אפשר לשנות לאחר ההעלאה. אז מה עושים? לא ניתן אמנם לבטל את הענקת ה-slug לקבצי מדיה, אך באמצעות הפילטר המאד שימושי wp_unique_post_slug ניתן להורות לוורדפרס להעניק slug מעט שונה לקבצי מדיה, כזה שתמיד יתחיל במילה attachment. היכנסו לקובץ functions.php של תבנית העיצוב שלכם (או של תבנית הבת), והדביקו את הקוד הבא:

function attachment_unique_post_slug($slug,$post_ID,$post_status,$post_type,$post_parent,$original_slug){
    if('attachment' == $post_type)
        $slug = 'attachment-'.$original_slug;
    return $slug;
}
add_filter('wp_unique_post_slug','attachment_unique_post_slug',10,6);

באמצעות הפילטר הזה אנו משתלטים על הפעולה של וורדפרס להענקת slug לפוסטים, ומבצעים מניפולציה קטנה: אם אנחנו מזהים שמדובר בקובץ מדיה, מוסיפים את התחילית attachment, ובכך אנחנו חופשיים להעלות תמונה בכל שם, בלי לחשוש מהתנגשות של מזהים טקסטואליים בעקבות שמות כלליים לתמונות וקבצי מדיה אחרים.

אהבת את המאמר? נושאים קשורים: