class-wpml-ls-menu-item.php
3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
class WPML_LS_Menu_Item {
/**
* @see wp_setup_nav_menu_item() to decorate the object
*/
public $ID; // The term_id if the menu item represents a taxonomy term.
public $attr_title; // The title attribute of the link element for this menu item.
public $classes = array(); // The array of class attribute values for the link element of this menu item.
public $db_id; // The DB ID of this item as a nav_menu_item object, if it exists (0 if it doesn't exist).
public $description; // The description of this menu item.
public $menu_item_parent; // The DB ID of the nav_menu_item that is this item's menu parent, if any. 0 otherwise.
public $object = 'wpml_ls_menu_item'; // The type of object originally represented, such as "category," "post", or "attachment."
public $object_id; // The DB ID of the original object this menu item represents, e.g. ID for posts and term_id for categories.
public $post_parent; // The DB ID of the original object's parent object, if any (0 otherwise).
public $post_title; // A "no title" label if menu item represents a post that lacks a title.
public $target; // The target attribute of the link element for this menu item.
public $title; // The title of this menu item.
public $type = 'wpml_ls_menu_item'; // The family of objects originally represented, such as "post_type" or "taxonomy."
public $type_label; // The singular label used to describe this type of menu item.
public $url; // The URL to which this menu item points.
public $xfn; // The XFN relationship expressed in the link of this menu item.
public $_invalid = false; // Whether the menu item represents an object that no longer exists.
public $menu_order;
public $post_type = 'nav_menu_item'; // * Extra property => see [wpmlcore-3855]
/**
* WPML_LS_Menu_Item constructor.
*
* @param array $language
* @param string $item_content
*/
public function __construct( $language, $item_content ) {
$this->decorate_object( $language, $item_content );
}
/**
* @param array $lang
* @param string $item_content
*/
private function decorate_object( $lang, $item_content ) {
$this->ID = isset( $lang['db_id'] ) ? $lang['db_id'] : null;
$this->object_id = isset( $lang['db_id'] ) ? $lang['db_id'] : null;
$this->db_id = isset( $lang['db_id'] ) ? $lang['db_id'] : null;
$this->menu_item_parent = isset( $lang['menu_item_parent'] ) ? $lang['menu_item_parent'] : null;
$this->attr_title = isset( $lang['display_name'] )
? $lang['display_name'] : ( isset( $lang['native_name'] ) ? $lang['native_name'] : '' );
$this->title = $item_content;
$this->post_title = $item_content;
$this->url = isset( $lang['url'] ) ? $lang['url'] : null;
if ( isset( $lang['css_classes'] ) ) {
$this->classes = $lang['css_classes'];
if ( is_string( $lang['css_classes'] ) ) {
$this->classes = explode( ' ', $lang['css_classes'] );
}
}
}
/**
* @param string $property
*
* @return mixed
*/
public function __get( $property ) {
return isset( $this->{$property} ) ? $this->{$property} : null;
}
}