在我看来,概述您的概念时,您需要执行以下操作:
检查是否有多个页面($GLOBALS[\'wp_query\']->max_num_pages > 1
)如果TRUE
, 添加导航菜单该概念在某些方面失败(答案末尾有更多解释):
如果有多个页面,你问得太早了。(您的想法真的是仅当您位于分页存档的第2页时才显示这些菜单?)你正在调查$post->post_name
如果没有a)从全局获取数据b)在循环之外,c)从错误的全局获取数据,那么您的生活将更加轻松functions.php
文件您可以添加如下菜单:
function wpse19269_add_nav_menus()
{
add_theme_support( \'menus\' );
$nav_menus = array(
\'home\' => \'The Home Menu\',
\'aviation\' => \'Aviation\',
\'anti-terrorism\' => \'Anti-Terrorism\',
\'asbestos\' => \'Asbestos\',
\'burn-pits\' => \'Burn Pits\',
\'catastrophic-injury\' => \'Catastrophic Injury\',
\'medical\' => \'Medical\',
\'securities\' => \'Securities\'
);
register_nav_menus( $nav_menus );
}
add_action( \'init\', \'wpse19269_add_nav_menus\', 20 );
如果您使用
functions.php
文件,您可以编写自己的自定义函数,避免将主题文件弄乱:
function wpse19269_show_nav_menus()
{
$menu = \'\'; // Set a value to avoid errors if no condition is met
if ( is_home() )
{
$menu = \'home\';
}
elseif( is_category(\'some_category\') )
{
$menu = \'whatever\';
}
elseif
{
// and so on...
}
// Nav Menu
wp_nav_menu( array(
\'theme-location\' => $location
,\'menu\' => \'top-nav\'
,\'menu_id\' => \'top-nav\'
,\'container\' => false
,\'container_class\' => \'menu-header\'
) );
}
// Use it in your theme like this:
// wpse19269_show_nav_menus();
看完你的片段后,我想最好解释一下一些基本的事情:
如果要访问global
可获得的$variables
, 你得先叫他们global $whatever
在函数中使用它之前。
Example:
function the_example()
{
global $post; // Now we have the global data available in the function
echo $post->post_title; // This is the post title - must be used inside the loop
}
你可以阅读
here 更多信息。
关于代码的其他注意事项:
wp_nav_menu( array( \'theme_location\' => "$menu" ...
应在没有"
.
WordPress功能无需质疑if ( function_exists(\'some_native_wp_fn\') ) {
, 因为它会存在。如果不再存在,你会得到depracated
请注意,这会告诉您有关它的信息。如果您对存在的问题提出质疑,您将取消通知,并且无法修复它(或者很难找到它)。