{"id":4925,"date":"2017-12-19T06:05:49","date_gmt":"2017-12-19T06:05:49","guid":{"rendered":"https:\/\/musilda.cz\/?p=4925"},"modified":"2017-12-19T06:05:49","modified_gmt":"2017-12-19T06:05:49","slug":"vytvorit-odlisne-menu-ruzne-stranky","status":"publish","type":"post","link":"https:\/\/affinite.io\/cs\/vytvorit-odlisne-menu-ruzne-stranky\/","title":{"rendered":"Jak vytvo\u0159it odli\u0161n\u00e9 menu pro r\u016fzn\u00e9 str\u00e1nky"},"content":{"rendered":"
O tom, jak vytvo\u0159it editovateln\u00e9 menu v \u0161ablon\u011b jsme si ji\u017e psali\u00a0 – Jak vytvo\u0159it v \u0161ablon\u011b editovateln\u00e9 menu<\/a>. Dnes si uk\u00e1\u017eeme, jak postupovat, pokud chcete m\u00edt odli\u0161nou navigaci, pro r\u016fzn\u00e9 str\u00e1nky.<\/p>\n Tento postup nemus\u00edte pou\u017e\u00edvat jen pro horizont\u00e1ln\u00ed menu, ale v podstat\u011b pro cokoliv, co chcete v \u0161ablon\u011b zobrazovat jen na n\u011bkter\u00fdch m\u00edstech.<\/p>\n Nejprve mus\u00edme naj\u00edt m\u00edsto, kde se v \u0161ablon\u011b menu zobrazuje. Pod\u00edv\u00e1me se do \u0161ablony underscores.me<\/a>, kde otev\u0159eme soubor header.php. Na \u0159\u00e1dku 62 najdeme um\u00edst\u011bn\u00ed horizont\u00e1ln\u00edho menu:<\/p>\n Tento \u0159\u00e1dek nahrad\u00edme funkc\u00ed – custom_menu_position_9876();<\/strong><\/p>\n A tuto funkci zap\u00ed\u0161eme do souboru functions.php aktivn\u00ed \u0161ablony, nebo do n\u011bjak\u00e9ho pluginu, jen\u017e si vytvo\u0159\u00edme. O tom Jak si vytvo\u0159it vlastn\u00ed plugin pro WordPress<\/a> jsem psal ji\u017e d\u0159\u00edve.<\/p>\n T\u00edm jsme si p\u0159ipravili funkci, d\u00edky n\u00ed\u017e m\u016f\u017eeme manipulovat se zobrazen\u00edm menu. Na prvn\u00ed pohled se nic nezm\u011bnilo.<\/p>\n Dal\u0161\u00edm krokem je vytvo\u0159en\u00ed dal\u0161\u00edch menu. To provedeme pomoc\u00ed tohoto k\u00f3du, jen\u017e p\u0159id\u00e1me k na\u0161\u00ed funkci:<\/p>\n T\u00edm se n\u00e1m v p\u0159i\u0159azen\u00ed menu v administraci, krom\u011b Primary menu, zobraz\u00ed dal\u0161\u00ed dv\u011b polo\u017eky. N\u00e1sledn\u011b vytvo\u0159\u00edte vlastn\u00ed menu a p\u0159i\u0159ad\u00edte jej do nov\u00fdch polo\u017eek.<\/p>\n P\u0159\u00edklady jsou nejlep\u0161\u00ed a \u0159ekn\u011bme, \u017ee m\u00e1te n\u011bjakou landing page, kde nechcete m\u00edt stejn\u00e9 menu, jako na ostatn\u00edch podstr\u00e1nk\u00e1ch. Naklik\u00e1te si jin\u00e9 polo\u017eky menu a p\u0159i\u0159ad\u00edte do Landing page menu.<\/p>\n Nyn\u00ed ji\u017e jen zb\u00fdv\u00e1, upravit na\u0161i prvn\u00ed funkci, aby to fungovalo. K tomu pou\u017eijeme WordPress podmi\u0148ovac\u00ed tagy<\/a>. Pomoc\u00ed nich m\u016f\u017eeme kontrolovat, kde se nach\u00e1z\u00edme. Zjist\u00edme, zda se jedn\u00e1 o str\u00e1nku s konkr\u00e9tn\u00edm id, pomoc\u00ed global $post. Pokud ano, zobraz\u00edme na\u0161e menu, pokud ne, zobraz\u00edme v\u00fdchoz\u00ed menu.<\/p>\n<\/a><\/p>\n
function custom_menu postion_9876(){\n\n wp_nav_menu( array<\/span>( '<\/span>theme_location'<\/span><\/span> =><\/span> '<\/span>primary'<\/span><\/span> ) );\n\n}<\/pre>\n
Vytvo\u0159en\u00ed um\u00edst\u011bn\u00ed pro dal\u0161\u00ed menu<\/h2>\n
add_action( '<\/span>after_setup_theme'<\/span><\/span>, '<\/span>custom_setup_9876'<\/span><\/span> );<\/pre>\n
function\u00a0custom_setup_9876(){\n <\/span>\n\n\u00a0 \u00a0 register_nav_menus( <\/span>\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0array(\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0'primary-second' => __( 'Landing page menu', 'underscoresme' ),<\/span>\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0'primary-third' => __( 'Emailing page menu', 'underscoresme' ),\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 )<\/span>\n\n\u00a0 \u00a0 );\n }<\/span><\/pre>\n
function custom_menu postion_9876(){\n\u00a0 \u00a0 \u00a0 \u00a0 global $post;\n\n\u00a0 \u00a0 \u00a0 \u00a0 if( $post->ID == 123 ){\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0wp_nav_menu( array<\/span>( '<\/span>theme_location'<\/span><\/span> =><\/span> 'primary-second<\/span>'<\/span><\/span> ) );\n\n\u00a0 \u00a0 \u00a0 \u00a0 }else{\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0wp_nav_menu( array<\/span>( '<\/span>theme_location'<\/span><\/span> =><\/span> '<\/span>primary'<\/span><\/span> ) );\n\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\n}<\/pre>\n