Home > Wordpress > Cách cập nhật wordpress menu có nhiều danh mục

Cách cập nhật wordpress menu có nhiều danh mục

Ví dụ: Bạn có một trang web làm bằng wordpress, có rất nhiều danh mục (wordpress large items nav menus). Làm việc với core của wordpress tại wp-admin/nav-menus.php (Appearance/Menus).

Khi update một cây danh mục lúc này core wordpress gọi truy vấn rất nhiều trường…Vì lý do bảo mật một số host share họ không cho phép thực thi một lượng truy vấn MySQL quá lớn tại một thời điểm…do đó bạn không thể thêm & cập nhật cây thư mục như hình sau:

wordpress_nav_menu

Vậy làm thể nào để giảm thiểu truy vấp MySQL vừa đủ để các host share cho phép bạn thêm & cập nhật một danh sách rất nhiều danh mục

Các bước thự hiện

Bạn tìm & đóng tất cả các trường sau:


/*
	'menu-item-description' => '',
	'menu-item-target' => '',
	'menu-item-classes' => '',
	'menu-item-xfn' => '',
*/

tại các file core của wordpress (với wordpress 3.5.0)

1, ../public_html/wp-includes/nav-menu.php

dòng 282


$defaults = array(
		'menu-item-db-id' => $menu_item_db_id,
		.........................
                ........................
		'menu-item-title' => '',
		'menu-item-url' => '',
		/*'menu-item-description' => '',*/
		'menu-item-attr-title' => '',
		/*
		'menu-item-target' => '',
		'menu-item-classes' => '',
		'menu-item-xfn' => '',
		*/
		'menu-item-status' => '',
	);


dòng 378 đến 383
//update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key($args['menu-item-target']) );
//$args['menu-item-classes'] = array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-classes'] ) );
//$args['menu-item-xfn'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $args['menu-item-xfn'] ) ) );
//update_post_meta( $menu_item_db_id, '_menu_item_classes', $args['menu-item-classes'] );
//update_post_meta( $menu_item_db_id, '_menu_item_xfn', $args['menu-item-xfn'] );

2, ../public_html/wp-admin/nav-menus.php

dòng 322


$post_fields = array( 'menu-item-db-id', 'menu-item-object-id', 'menu-item-object', 'menu-item-parent-id', 'menu-item-position', 'menu-item-type', 'menu-item-title', 'menu-item-url'/*, 'menu-item-description'*/ , 'menu-item-attr-title'/*, 'menu-item-target', 'menu-item-classes', 'menu-item-xfn'*/ );

3, ../public_html/wp-admin/includes/nav-menu.php

dòng 147


<!--

<label for="edit-menu-item-classes-"> <input type="text" id="edit-menu-item-classes-" class="widefat code edit-menu-item-classes" name="menu-item-classes[]" value="classes ) ); ?>" />

<label for="edit-menu-item-xfn-"> <input type="text" id="edit-menu-item-xfn-" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[]" value="xfn ); ?>" />

<label for="edit-menu-item-description-"> <textarea id="edit-menu-item-description-" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[]">description ); // textarea_escaped ?> -->

dòng 1010


$args = array(
'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ),
..................................
...........................
'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ),
/*
'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ),
*/
'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ),
/*
'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ),
'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ),
'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ),
*/
);

Ghi chú:
Mục đích của các thẻ /*….*/, // là đóng các trường dữ liệu không cần thiết khi wordpress admin thêm hoặc tạo nav-menus

PHP Developer
nhantam

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: