Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_nav_menu_item_post_type_meta_box [ WordPress Function ]

wp_nav_menu_item_post_type_meta_box ( $object, $post_type )
Parameters:
  • (string) $object Not used.
  • (string) $post_type The post type object.
Defined at:



Displays a metabox for a post type menu item.

Source


<?php
function wp_nav_menu_item_post_type_meta_box$object$post_type ) {
    global 
$_nav_menu_placeholder$nav_menu_selected_id;

    
$post_type_name $post_type['args']->name;

    
// paginate browsing for large numbers of post objects
    
$per_page 50;
    
$pagenum = isset( $_REQUEST[$post_type_name '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint$_REQUEST['paged'] ) : 1;
    
$offset $pagenum $per_page * ( $pagenum ) : 0;

    
$args = array(
        
'offset' => $offset,
        
'order' => 'ASC',
        
'orderby' => 'title',
        
'posts_per_page' => $per_page,
        
'post_type' => $post_type_name,
        
'suppress_filters' => true,
        
'update_post_term_cache' => false,
        
'update_post_meta_cache' => false
    
);

    if ( isset( 
$post_type['args']->_default_query ) )
        
$args array_merge($args, (array) $post_type['args']->_default_query );

    
// @todo transient caching of these results with proper invalidation on updating of a post of this type
    
$get_posts = new WP_Query;
    
$posts $get_posts->query$args );
    if ( ! 
$get_posts->post_count ) {
        echo 
'<p>' __'No items.' ) . '</p>';
        return;
    }

    
$post_type_object get_post_type_object($post_type_name);

    
$num_pages $get_posts->max_num_pages;

    
$page_links paginate_links( array(
        
'base' => add_query_arg(
            array(
                
$post_type_name '-tab' => 'all',
                
'paged' => '%#%',
                
'item-type' => 'post_type',
                
'item-object' => $post_type_name,
            )
        ),
        
'format' => '',
        
'prev_text' => __('&laquo;'),
        
'next_text' => __('&raquo;'),
        
'total' => $num_pages,
        
'current' => $pagenum
    
));

    if ( !
$posts )
        
$error '<li id="error">'$post_type['args']->labels->not_found .'</li>';

    
$db_fields false;
    if ( 
is_post_type_hierarchical$post_type_name ) ) {
        
$db_fields = array( 'parent' => 'post_parent''id' => 'ID' );
    }

    
$walker = new Walker_Nav_Menu_Checklist$db_fields );

    
$current_tab 'most-recent';
    if ( isset( 
$_REQUEST[$post_type_name '-tab'] ) && in_array$_REQUEST[$post_type_name '-tab'], array('all''search') ) ) {
        
$current_tab $_REQUEST[$post_type_name '-tab'];
    }

    if ( ! empty( 
$_REQUEST['quick-search-posttype-' $post_type_name] ) ) {
        
$current_tab 'search';
    }

    
$removed_args = array(
        
'action',
        
'customlink-tab',
        
'edit-menu-item',
        
'menu-item',
        
'page-tab',
        
'_wpnonce',
    );

    
?>
    <div id="posttype-<?php echo $post_type_name?>" class="posttypediv">
        <ul id="posttype-<?php echo $post_type_name?>-tabs" class="posttype-tabs add-menu-item-tabs">
            <li <?php echo ( 'most-recent' == $current_tab ' class="tabs"' '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name '-tab''most-recent'remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name?>-most-recent"><?php _e('Most Recent'); ?></a></li>
            <li <?php echo ( 'all' == $current_tab ' class="tabs"' '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name '-tab''all'remove_query_arg($removed_args))); ?>#<?php echo $post_type_name?>-all"><?php _e('View All'); ?></a></li>
            <li <?php echo ( 'search' == $current_tab ' class="tabs"' '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name '-tab''search'remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name?>-search"><?php _e('Search'); ?></a></li>
        </ul>

        <div id="tabs-panel-posttype-<?php echo $post_type_name?>-most-recent" class="tabs-panel <?php
            
echo ( 'most-recent' == $current_tab 'tabs-panel-active' 'tabs-panel-inactive' );
        
?>">
            <ul id="<?php echo $post_type_name?>checklist-most-recent" class="categorychecklist form-no-clear">
                <?php
                $recent_args 
array_merge$args, array( 'orderby' => 'post_date''order' => 'DESC''posts_per_page' => 15 ) );
                
$most_recent $get_posts->query$recent_args );
                
$args['walker'] = $walker;
                echo 
walk_nav_menu_treearray_map('wp_setup_nav_menu_item'$most_recent), 0, (object) $args );
                
?>
            </ul>
        </div><!-- /.tabs-panel -->

        <div class="tabs-panel <?php
            
echo ( 'search' == $current_tab 'tabs-panel-active' 'tabs-panel-inactive' );
        
?>" id="tabs-panel-posttype-<?php echo $post_type_name?>-search">
            <?php
            
if ( isset( $_REQUEST['quick-search-posttype-' $post_type_name] ) ) {
                
$searched esc_attr$_REQUEST['quick-search-posttype-' $post_type_name] );
                
$search_results get_posts( array( 's' => $searched'post_type' => $post_type_name'fields' => 'all''order' => 'DESC', ) );
            } else {
                
$searched '';
                
$search_results = array();
            }
            
?>
            <p class="quick-search-wrap">
                <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched?>" name="quick-search-posttype-<?php echo $post_type_name?>" />
                <img class="waiting" src="<?php echo esc_urladmin_url'images/wpspin_light.gif' ) ); ?>" alt="" />
                <?php submit_button__'Search' ), 'quick-search-submit button-secondary hide-if-js''submit'false, array( 'id' => 'submit-quick-search-posttype-' $post_type_name ) ); ?>
            </p>

            <ul id="<?php echo $post_type_name?>-search-checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear">
            <?php if ( ! empty( $search_results ) && ! is_wp_error$search_results ) ) : ?>
                <?php
                $args
['walker'] = $walker;
                echo 
walk_nav_menu_treearray_map('wp_setup_nav_menu_item'$search_results), 0, (object) $args );
                
?>
            <?php elseif ( is_wp_error$search_results ) ) : ?>
                <li><?php echo $search_results->get_error_message(); ?></li>
            <?php elseif ( ! empty( $searched ) ) : ?>
                <li><?php _e('No results found.'); ?></li>
            <?php endif; ?>
            </ul>
        </div><!-- /.tabs-panel -->

        <div id="<?php echo $post_type_name?>-all" class="tabs-panel tabs-panel-view-all <?php
            
echo ( 'all' == $current_tab 'tabs-panel-active' 'tabs-panel-inactive' );
        
?>">
            <?php if ( ! empty( $page_links ) ) : ?>
                <div class="add-menu-item-pagelinks">
                    <?php echo $page_links?>
                </div>
            <?php endif; ?>
            <ul id="<?php echo $post_type_name?>checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear">
                <?php
                $args
['walker'] = $walker;

                
// if we're dealing with pages, let's put a checkbox for the front page at the top of the list
                
if ( 'page' == $post_type_name ) {
                    
$front_page 'page' == get_option('show_on_front') ? (int) get_option'page_on_front' ) : 0;
                    if ( ! empty( 
$front_page ) ) {
                        
$front_page_obj get_post$front_page );
                        
$front_page_obj->_add_to_top true;
                        
$front_page_obj->label sprintf_x('Home: %s''nav menu front page title'), $front_page_obj->post_title );
                        
array_unshift$posts$front_page_obj );
                    } else {
                        
$_nav_menu_placeholder = ( $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - : -1;
                        
array_unshift$posts, (object) array(
                            
'_add_to_top' => true,
                            
'ID' => 0,
                            
'object_id' => $_nav_menu_placeholder,
                            
'post_content' => '',
                            
'post_excerpt' => '',
                            
'post_parent' => '',
                            
'post_title' => _x('Home''nav menu home label'),
                            
'post_type' => 'nav_menu_item',
                            
'type' => 'custom',
                            
'url' => home_url('/'),
                        ) );
                    }
                }

                
$posts apply_filters'nav_menu_items_'.$post_type_name$posts$args$post_type );
                
$checkbox_items walk_nav_menu_treearray_map('wp_setup_nav_menu_item'$posts), 0, (object) $args );

                if ( 
'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) {
                    
$checkbox_items preg_replace('/(type=(.)checkbox(\2))/''$1 checked=$2checked$2'$checkbox_items);

                }

                echo 
$checkbox_items;
                
?>
            </ul>
            <?php if ( ! empty( $page_links ) ) : ?>
                <div class="add-menu-item-pagelinks">
                    <?php echo $page_links?>
                </div>
            <?php endif; ?>
        </div><!-- /.tabs-panel -->

        <p class="button-controls">
            <span class="list-controls">
                <a href="<?php
                    
echo esc_url(add_query_arg(
                        array(
                            
$post_type_name '-tab' => 'all',
                            
'selectall' => 1,
                        ),
                        
remove_query_arg($removed_args)
                    ));
                
?>#posttype-<?php echo $post_type_name?>" class="select-all"><?php _e('Select All'); ?></a>
            </span>

            <span class="add-to-menu">
                <img class="waiting" src="<?php echo esc_urladmin_url'images/wpspin_light.gif' ) ); ?>" alt="" />
                <input type="submit"<?php disabled$nav_menu_selected_id); ?> class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-post-type-menu-item" id="submit-posttype-<?php echo $post_type_name?>" />
            </span>
        </p>

    </div><!-- /.posttypediv -->
    <?php
}
?>

Examples [ wp-snippets.com ]

Top Google zoekresultaten

Meer ...

Gebruikersdiscussies [ wordpress.org ]

0 User Note(s)

Nog geen één. Wees de eerste!

Nieuw toevoegen ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics