উত্তর:
ফিল্টারিংয়ের মাধ্যমে এটি সম্ভব wp_nav_menu_objects
, কোন মেনু আইটেমটি বর্তমান মেনু আইটেম তা যাচাই করার সবচেয়ে সহজ জায়গা, কারণ ওয়ার্ডপ্রেস ইতিমধ্যে আপনার জন্য ক্লাস যুক্ত করেছে ।
add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
foreach ( $sorted_menu_items as $menu_item ) {
if ( $menu_item->current ) {
$GLOBALS['wpse16243_title'] = $menu_item->title;
break;
}
}
return $sorted_menu_items;
}
আপনি এখন নতুন শিরোনামের পরিবর্তে এই নতুন বৈশ্বিক চলকটি ব্যবহার করতে পারেন। সাধারণ উদাহরণ:
add_filter( 'single_cat_title', 'wpse16243_single_cat_title' );
function wpse16243_single_cat_title( $cat_title )
{
if ( isset( $GLOBALS['wpse16243_title'] ) ) {
return $GLOBALS['wpse16243_title'];
}
return $cat_title;
}
অবশ্যই, এটি কেবলমাত্র যদি আপনি শিরোনাম প্রদর্শন করার আগে মেনু প্রদর্শন করেন তবেই এটি কাজ করে। আপনার যদি এটির আগে প্রয়োজন হয় (সম্ভবত <title>
উপাদানটিতে?), আপনার প্রথমে মেনুটি রেন্ডার করা উচিত এবং তারপরে এটি পরে প্রদর্শন করা উচিত ।
wpse16243_wp_nav_menu_objects
বর্তমান মেনু আইডিটি পুনরুদ্ধার করতে চেষ্টা করেছি । তবে এটি সংবেদনশীল নয়। হোম পৃষ্ঠা এবং একটি মেনু আইটেমের মধ্যে স্যুইচিং আমাকে সর্বদা সঠিক মেনু আইটেম দেয় না - এটি "লেগস" ধরণের। আমি কীভাবে বর্তমান মেনু আইডিটি পুনরুদ্ধার করতে পারি সে সম্পর্কে কোনও পরামর্শ?
wpse16243
? আমি এই অদ্ভুত নামটির নামটি দেখতে দেখতে মোটামুটি সাধারণ এবং কী ঘটছে তা অবাক করে দেখছি। দাবি অস্বীকার: ওয়ার্ডপ্রেস নুব।
WordPress Stack Exchange question number 16243
। লোকেরা যদি সরাসরি এই কোডটি অনুলিপি করে তবে এটি অন্য প্লাগইনগুলির সাথে বিরোধ করবে না যা একই ফাংশনটির নাম ভাগ করে নিতে পারে।
আপনি ব্যবহার করতে পারেন wp_get_nav_menu_items()
। একটি নমুনা এখানে function
:
<?php
function my_get_menu_item_name( $loc ) {
global $post;
$locs = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locs[$loc] );
if($menu) {
$items = wp_get_nav_menu_items($menu->term_id);
foreach ($items as $k => $v) {
// Check if this menu item links to the current page
if ($items[$k]->object_id == $post->ID) {
$name = $items[$k]->title;
break;
}
}
}
return $name;
}
তারপরে আপনি যে ন্যাভ মেনুটি ব্যবহার করতে চান function
তার অবস্থানের নামটি দিয়ে কল করুন :
<?php
$menu_name = my_get_menu_item_name( 'NAV_MENU_LOCATION_NAME' ); // eg. 'primary'
echo $menu_name;
add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
foreach ( $sorted_menu_items as $menu_item ) {
if ($menu_item->current ) {
$GLOBALS['currentMenuTitle'] = $menu_item->title;
$GLOBALS['currentMenuID'] = $menu_item->ID;
break;
}
}
return $sorted_menu_items;
}
function get_menu_items_children( $menu_item_id='' )
{
global $wpdb;
// AND meta_key='_menu_item_menu_item_parent'
$myrows = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta JOIN $wpdb->posts ON $wpdb->postmeta.post_id=$wpdb->posts.id WHERE meta_value = '".$menu_item_id."' AND meta_key='_menu_item_menu_item_parent' ORDER BY $wpdb->posts.menu_order ASC" );
foreach ( $myrows as $menu_item ) {
$sc = get_object_vars($menu_item);
$myrowsb = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE post_id = '".$sc['post_id']."' AND meta_key='_menu_item_object_id' " );
foreach ( $myrowsb as $menu_itemb ) {
$scb = get_object_vars($menu_itemb);
$pmIDs[] = $scb['meta_value'];
}
}
return $pmIDs;
}
আমি নিশ্চিত না যে আমি ঠিক অনুসরণ করি।
"জাদুঘরগুলি আমরা সমর্থন করি" একটি পোস্ট শিরোনাম, পৃষ্ঠা শিরোনাম, বিভাগ শিরোনাম, ইত্যাদি দ্বারা উত্পাদিত হয় (বা, আপনি যদি কাস্টম নেভিগেশন মেনু ব্যবহার করেন তবে এটি একটি কাস্টম শিরোনাম হতে পারে)।
আপনি এই পাঠ্যটি দিয়ে কী করার চেষ্টা করছেন? আপনি কোথায় এটি প্রদর্শনের চেষ্টা করছেন? আমি ধরে নিচ্ছি আপনি এটি বিভাগ সূচী পৃষ্ঠায় প্রদর্শন করার চেষ্টা করছেন (যেহেতু আপনি এটি ইঙ্গিত করেছেন current-menu-item
)? যদি তা হয়, কেবল <?php single_cat_title(); ?>
বিভাগ শিরোনাম আউটপুট কল ।
আপনার যদি অতিরিক্ত বিভাগের তথ্য প্রয়োজন হয় তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন:
$cat = get_the_category();
$currentcat = $cat[0];
যা নিম্নলিখিত ভেরিয়েবলগুলি উপলব্ধ করে:
$currentcat=>cat_ID // Category ID
$currentcat=>cat_name // Category Name (Same as Title)
$currentcat=>category_nicename // Category Slug
$currentcat=>category_description // Category Description
$currentcat=>category_count // Category Count (# of Posts w/ this Category)
আপনি যদি বিভাগ সূচি পৃষ্ঠা ব্যতীত অন্য কোথাও হন তবে আপনাকে এই ক্রিয়াকলাপগুলিতে উত্তীর্ণ হতে হবে।
সম্পাদনা করুন:
যেহেতু আপনি ইঙ্গিত করেছেন যে "যাদুঘরগুলি আমরা সমর্থন করি" এটি একটি কাস্টম মেনু শিরোনাম, তাই সবচেয়ে সহজ পদ্ধতির তালিকাটি "যাদুঘর" থেকে "জাদুঘরগুলি আমরা সমর্থন করি" নামকরণ করা (নোট: আপনি স্লাগ ছেড়ে যেতে পারেন museums
, অপরিবর্তিত রাখতে পারেন)। তবে এটি করার অর্থ হ'ল "যাদুঘরগুলি আমরা সমর্থন করি" বিভাগের শিরোনাম হিসাবে প্রদর্শিত হবে যেখানে এটি আপনার টেমপ্লেটে আউটপুট হতে পারে। যদি তা গ্রহণযোগ্য হয়, তবে কোনও উদ্বেগ নেই।
অন্যথায়, নির্দিষ্ট মেনু আইটেমটির শিরোনাম দখল করতে আপনাকে wp_get_nav_menu_items()
( কোডেক্স রেফ ) এর মতো কিছু ব্যবহার করতে হবে ।
wp_get_nav_menu_items()
।