value() 공개 메소드

Get the instance data for a given nav_menu_item setting.
또한 보기: wp_setup_nav_menu_item()
부터: 4.3.0
public value ( ) : array | false
리턴 array | false Instance data array, or false if the item is marked for deletion.
예제 #1
0
 /**
  * @ticket 33665
  */
 function test_invalid_nav_menu_item()
 {
     $menu_id = wp_create_nav_menu('Primary');
     register_post_type('poem', array('public' => true));
     $post_id = self::factory()->post->create(array('post_type' => 'poem', 'post_title' => 'Code is poetry.'));
     $post = get_post($post_id);
     $item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'post_type', 'menu-item-object' => 'poem', 'menu-item-object-id' => $post_id, 'menu-item-title' => $post->post_title, 'menu-item-status' => 'publish', 'menu-item-position' => 1));
     $setting_id = "nav_menu_item[{$item_id}]";
     do_action('customize_register', $this->wp_customize);
     $setting = $this->wp_customize->get_setting($setting_id);
     $this->assertNotEmpty($setting);
     $value = $setting->value();
     $this->assertFalse($value['_invalid']);
     $value_object = $setting->value_as_wp_post_nav_menu_item();
     $this->assertFalse($value_object->_invalid);
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, $setting_id);
     $value = $setting->value();
     $this->assertFalse($value['_invalid']);
     $value_object = $setting->value_as_wp_post_nav_menu_item();
     $this->assertFalse($value_object->_invalid);
     _unregister_post_type('poem');
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, $setting_id);
     $value = $setting->value();
     $this->assertTrue($value['_invalid']);
     $value_object = $setting->value_as_wp_post_nav_menu_item();
     $this->assertTrue($value_object->_invalid);
 }
예제 #2
0
 /**
  * Test WP_Customize_Nav_Menu_Item_Setting::value_as_wp_post_nav_menu_item() for obtaining original title.
  *
  * @ticket 38945
  * @covers WP_Customize_Nav_Menu_Item_Setting::get_original_title()
  */
 function test_get_original_title()
 {
     $menu_id = wp_create_nav_menu('Menu');
     register_post_type('press_release', array('has_archive' => true, 'labels' => array('name' => 'PRs', 'singular_name' => 'PR', 'archives' => 'All PRs')));
     $original_post_title = 'The PR Post';
     $post_id = self::factory()->post->create(array('post_type' => 'press_release', 'post_title' => $original_post_title));
     $original_term_title = 'The Category Term';
     $term_id = self::factory()->term->create(array('taxonomy' => 'category', 'name' => $original_term_title));
     // Post: existing nav menu item.
     $nav_menu_item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-object-id' => $post_id, 'menu-item-type' => 'post_type', 'menu-item-object' => 'press_release', 'menu-item-title' => '', 'menu-item-status' => 'publish'));
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, 'nav_menu_item[' . $nav_menu_item_id . ']');
     $item_value = $setting->value();
     $this->assertEquals($original_post_title, $item_value['original_title']);
     $this->assertEquals('', $item_value['title']);
     $item = $setting->value_as_wp_post_nav_menu_item();
     $this->assertObjectHasAttribute('type_label', $item);
     $this->assertEquals($original_post_title, $item->original_title);
     $this->assertEquals($original_post_title, $item->title);
     $this->assertArrayHasKey('type_label', $item_value);
     $this->assertEquals(get_post_type_object('press_release')->labels->singular_name, $item_value['type_label']);
     $this->assertEquals($item->type_label, $item_value['type_label']);
     // Post: staged nav menu item.
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, 'nav_menu_item[-1]');
     $this->wp_customize->set_post_value($setting->id, array('object_id' => $post_id, 'type' => 'post_type', 'object' => 'press_release', 'title' => '', 'status' => 'publish'));
     $setting->preview();
     $item_value = $setting->value();
     $this->assertEquals($original_post_title, $item_value['original_title']);
     $this->assertEquals('', $item_value['title']);
     $item = $setting->value_as_wp_post_nav_menu_item();
     $this->assertObjectHasAttribute('type_label', $item);
     $this->assertEquals($original_post_title, $item->original_title);
     $this->assertEquals($original_post_title, $item->title);
     $this->assertArrayHasKey('type_label', $item_value);
     $this->assertEquals(get_post_type_object('press_release')->labels->singular_name, $item_value['type_label']);
     $this->assertEquals($item->type_label, $item_value['type_label']);
     // Term: existing nav menu item.
     $nav_menu_item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-object-id' => $term_id, 'menu-item-type' => 'taxonomy', 'menu-item-object' => 'category', 'menu-item-title' => '', 'menu-item-status' => 'publish'));
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, 'nav_menu_item[' . $nav_menu_item_id . ']');
     $item_value = $setting->value();
     $this->assertEquals($original_term_title, $item_value['original_title']);
     $this->assertEquals('', $item_value['title']);
     $item = $setting->value_as_wp_post_nav_menu_item();
     $this->assertObjectHasAttribute('type_label', $item);
     $this->assertEquals($original_term_title, $item->original_title);
     $this->assertEquals($original_term_title, $item->title);
     $this->assertArrayHasKey('type_label', $item_value);
     $this->assertEquals(get_taxonomy('category')->labels->singular_name, $item_value['type_label']);
     $this->assertEquals($item->type_label, $item_value['type_label']);
     // Term: staged nav menu item.
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, 'nav_menu_item[-2]');
     $this->wp_customize->set_post_value($setting->id, array('object_id' => $term_id, 'type' => 'taxonomy', 'object' => 'category', 'title' => '', 'status' => 'publish'));
     $setting->preview();
     $item_value = $setting->value();
     $this->assertEquals($original_term_title, $item_value['original_title']);
     $this->assertEquals('', $item_value['title']);
     $item = $setting->value_as_wp_post_nav_menu_item();
     $this->assertObjectHasAttribute('type_label', $item);
     $this->assertEquals($original_term_title, $item->original_title);
     $this->assertEquals($original_term_title, $item->title);
     $this->assertArrayHasKey('type_label', $item_value);
     $this->assertEquals(get_taxonomy('category')->labels->singular_name, $item_value['type_label']);
     $this->assertEquals($item->type_label, $item_value['type_label']);
     // Post Type Archive: existing nav menu item.
     $nav_menu_item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'post_type_archive', 'menu-item-object' => 'press_release', 'menu-item-title' => '', 'menu-item-status' => 'publish'));
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, 'nav_menu_item[' . $nav_menu_item_id . ']');
     $item_value = $setting->value();
     $this->assertEquals(get_post_type_object('press_release')->labels->archives, $item_value['original_title']);
     $this->assertEquals('', $item_value['title']);
     $item = $setting->value_as_wp_post_nav_menu_item();
     $this->assertObjectHasAttribute('type_label', $item);
     $this->assertEquals(get_post_type_object('press_release')->labels->archives, $item->original_title);
     $this->assertEquals(get_post_type_object('press_release')->labels->archives, $item->title);
     $this->assertArrayHasKey('type_label', $item_value);
     $this->assertEquals(__('Post Type Archive'), $item_value['type_label']);
     $this->assertEquals($item->type_label, $item_value['type_label']);
     // Post Type Archive: staged nav menu item.
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, 'nav_menu_item[-3]');
     $this->wp_customize->set_post_value($setting->id, array('type' => 'post_type_archive', 'object' => 'press_release', 'title' => '', 'status' => 'publish'));
     $setting->preview();
     $item_value = $setting->value();
     $this->assertEquals(get_post_type_object('press_release')->labels->archives, $item_value['original_title']);
     $this->assertEquals('', $item_value['title']);
     $item = $setting->value_as_wp_post_nav_menu_item();
     $this->assertObjectHasAttribute('type_label', $item);
     $this->assertEquals(get_post_type_object('press_release')->labels->archives, $item->original_title);
     $this->assertEquals(get_post_type_object('press_release')->labels->archives, $item->title);
     $this->assertArrayHasKey('type_label', $item_value);
     $this->assertEquals(__('Post Type Archive'), $item_value['type_label']);
     $this->assertEquals($item->type_label, $item_value['type_label']);
 }
 /**
  * Test value method returns zero for nav_menu_term_id when previewing a new menu.
  *
  * @see WP_Customize_Nav_Menu_Item_Setting::value()
  */
 function test_value_nav_menu_term_id_returns_zero()
 {
     do_action('customize_register', $this->wp_customize);
     $menu_id = -123;
     $post_value = array('name' => 'Secondary', 'description' => '', 'parent' => 0, 'auto_add' => false);
     $setting_id = "nav_menu[{$menu_id}]";
     $menu = new WP_Customize_Nav_Menu_Setting($this->wp_customize, $setting_id);
     $this->wp_customize->set_post_value($menu->id, $post_value);
     $menu->preview();
     $value = $menu->value();
     $this->assertEquals($post_value, $value);
     $post_id = $this->factory->post->create(array('post_title' => 'Hello World'));
     $item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'post_type', 'menu-item-object' => 'post', 'menu-item-object-id' => $post_id, 'menu-item-title' => 'Hello World', 'menu-item-status' => 'publish'));
     $post = get_post($item_id);
     $menu_item = wp_setup_nav_menu_item($post);
     $setting_id = "nav_menu_item[{$item_id}]";
     $setting = new WP_Customize_Nav_Menu_Item_Setting($this->wp_customize, $setting_id);
     $value = $setting->value();
     $this->assertEquals(0, $value['nav_menu_term_id']);
 }