Conditionally display menu for page type in Wordpr

2019-09-09 15:37发布

问题:

I am relatively unfamiliar with Wordpress and I am creating a custom theme for a client. I would like to either display or remove the main menu depending on the page type. I have researched several options like removing the navigation from header.php and referencing it separately and also making the menu conditional which is preferable.

I have a custom page type in my theme called 'landing page' on which I would like the menu to be never be displayed, though it will be on every other page. Ultimately there will be a lot of these and I would rather I didn't have to intervene.

I would rather not duplicate my header.php file but I can only find reference to displaying the menu conditionally like below by page name or ID which seems ridiculous.

<?php
 if (is_page('contact')){
 <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
elseif (is_page('gallery')){
 <?php include(TEMPLATEPATH.'/headerB.php'); ?>
}
else {
 <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
?>

Rather than including files as above, I will put the whole thing into my header and just make the navigation conditional. Does anyone know how I should approach this using my custom page type landing page rather than by page name so every page created with that type will never have a menu?

Thanks

回答1:

Are you talking about a Custom Post Type (CPT) or a page called landing-page?

They are completely different. See http://codex.wordpress.org/Post_Types

In any event, this will work for a custom post type or a page:

if ( !is_singular( 'custom-post-type-name-or-page-slug-here' ) ) {

get_template_part('menu');

}

It says: "If this page is not a single page or a CPT, load the file menu.php from the theme folder."

See also http://codex.wordpress.org/Include_Tags:

The get_template_part() tag includes the file {slug}.php or {slug}-{name}.php from your current theme's directory, a custom Include Tags other than header, sidebar, footer.