אחת הדרישות הפופולריות בקרב לקוחות שבקיאים בקידום אתרים אורגני היא להסיר את ה-slug של ה-CPT (ה-Custom post type) מה-Url של כל פוסט כפי שמגיע בוורדפרס כברירת מחדל. עושים זאת גם כדי לייצר Url יפה יותר (וקצר יותר), אך חשוב מכך כדי לייצר מבנה היררכי תקין של כתובות ה-Url.

לפניכם שתי פונקציות שיסייעו לכם להסיר את ה-slug של ה-CPT מה-Url. בתחילת כל פונקציה תמצאו את המשתנה $cpt_key שם יש לכתוב את ה-slug של ה-CPT שברצונכם להסיר.

function cnr_remove_cpt_slug($post_link, $post, $leavename) {
$cpt_key = 'services';

if ($cpt_key != $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', 'cnr_remove_cpt_slug', 10, 3);

function cnr_parse_request_tricksy($query) {
$cpt_key = 'services';

if (!$query->is_main_query())
return;

if (2 != count($query->query) || !isset($query->query['page'])) {
return;
}

if (!empty($query->query['name'])) {
$query->set('post_type', array('post', $cpt_key, 'page'));
}
}

add_action('pre_get_posts', 'cnr_parse_request_tricksy');

את שתי הפונקציות הללו יש לכלול דרך הקובץ functios.php של התבנית שלכם.