সেই পদ্ধতির সাথে আরও উদারতা দেওয়ার জন্য আমি টুংডের উত্তরে কিছুটা প্রসারিত করেছি । এই প্রয়োগটি মেনু 'ম্যাক্রোস' এবং অভ্যন্তরীণ ওয়ার্ডপ্রেস ইউআরএলগুলির মধ্যে স্বেচ্ছাসেবী ম্যাপিং যোগ করার অনুমতি দেয় যা কেবলমাত্র ব্যাকএন্ড সম্পর্কে জানে।
!
নামযুক্ত অ্যাঙ্করগুলির সাথে সংঘর্ষ এড়াতে আমি এই ম্যাক্রোগুলির উপসর্গ হিসাবে ব্যবহার করার সিদ্ধান্ত নিয়েছি - এর মধ্যে লিঙ্ক ইউআরএল থেকে 'http: //' কেটে ফেলার জন্য একটি ওভারহেড অন্তর্ভুক্ত রয়েছে (ওয়ার্ডপ্রেস এই অদ্ভুত লিঙ্কগুলি স্বাভাবিক করার চেষ্টা করবে) । যদি সেই বাস্তবায়ন আপনাকে বিরক্ত করে, আপনি সর্বদা preg_replace()
কলটি সরিয়ে ফেলতে পারেন এবং #
আগের মতো আপনার লিঙ্ক উপসর্গ হিসাবে ব্যবহার করতে পারেন ।
class Extendable_Menu_Walker extends Walker_Nav_Menu
{
protected static $custom_urls = array();
public static function setupUrls()
{
// calls to self::mapPostType($postTypeName) and
// self::createMapping($wildcard, $url) go here...
}
public function start_el(&$output, $item, $depth=0, $args=array(), $id=0)
{
$url = preg_replace('@^https?://@', '', $item->url);
if (isset( self::$custom_urls[ $url ] )) {
$item->url = self::$custom_urls[ $url ];
}
parent::start_el($output, $item, $depth, $args, $id);
}
public static function createMapping($urlKey, $realUrl)
{
self::$custom_urls['!' . $urlKey] = $realUrl;
}
public static function mapPostType($type)
{
self::createMapping('post_type_' . $type, get_post_type_archive_link($type));
}
}
add_action('init', array('Extendable_Menu_Walker', 'setupUrls'));