_wp_auto_add_pages_to_menu

函数
_wp_auto_add_pages_to_menu ( $new_status, $old_status, $post )
Access
Private
参数
  • (string) $new_status The new status of the post object.
    Required:
  • (string) $old_status The old status of the post object.
    Required:
  • (WP_Post) $post The post object being transitioned from one status to another.
    Required:
定义位置
相关方法
wp_page_menuwp_widgets_add_menuwp_admin_bar_edit_menuwp_default_packages_vendorwp_admin_bar_site_menu
引入
3.0.0
弃用
-

_wp_auto_add_pages_to_menu: 这个函数用于自动添加新的页面到菜单中: 当一个新的页面被创建时,它被调用,并以默认设置将该页面添加到菜单中。

自动将新发布的页面对象添加到菜单中,并将此作为一个选项。

function _wp_auto_add_pages_to_menu( $new_status, $old_status, $post ) {
	if ( 'publish' !== $new_status || 'publish' === $old_status || 'page' !== $post->post_type ) {
		return;
	}
	if ( ! empty( $post->post_parent ) ) {
		return;
	}
	$auto_add = get_option( 'nav_menu_options' );
	if ( empty( $auto_add ) || ! is_array( $auto_add ) || ! isset( $auto_add['auto_add'] ) ) {
		return;
	}
	$auto_add = $auto_add['auto_add'];
	if ( empty( $auto_add ) || ! is_array( $auto_add ) ) {
		return;
	}

	$args = array(
		'menu-item-object-id' => $post->ID,
		'menu-item-object'    => $post->post_type,
		'menu-item-type'      => 'post_type',
		'menu-item-status'    => 'publish',
	);

	foreach ( $auto_add as $menu_id ) {
		$items = wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) );
		if ( ! is_array( $items ) ) {
			continue;
		}
		foreach ( $items as $item ) {
			if ( $post->ID == $item->object_id ) {
				continue 2;
			}
		}
		wp_update_nav_menu_item( $menu_id, 0, $args );
	}
}

常见问题

FAQs
查看更多 >