WP Metabox в nav-меню для виртуальных страниц, не отображающих URL
У меня есть несколько виртуальных страниц на WordPress, и страница хранится на временных данных при создании страницы или изменении заголовка. Я пытаюсь добавить эти страницы в метабокс на nav-menus.php. Почти все работает, как и ожидалось, но URL отсутствует на серверной части, а во внешнем интерфейсе ссылки с href=""
Код:
<?php
class MP_MenuVirtualPages {
public function __construct() {
add_action('admin_init', array( $this, 'virtualpages_register_menu_metabox' ) ) ;
}
public function virtualpages_register_menu_metabox() {
add_meta_box(
'virtualpages-menu-test-metabox',
__( 'Virtual pages', MP_TEXTDOMAIN ),
array( $this, 'render_manu_virtualpages_metabox' ),
'nav-menus',
'side',
'default'
);
}
static public function render_manu_virtualpages_metabox( $object, $args ) {
global $nav_menu_selected_id;
global $wpdb;
$sql = "SELECT `option_name` AS `name`, `option_value` AS `value`
FROM $wpdb->options
WHERE `option_name` LIKE '%transient_gm_virtualpage%'
ORDER BY `option_name`";
$results = $wpdb->get_results( $sql );
$virtualpages_items = array();
foreach ( $results as $id => $result )
{
$page = unserialize( $result->value );
$virtualpages_items[] = (object) array(
'ID' => $id,
'db_id' => 0,
'menu_item_parent' => 0,
'object_id' => 1,
'post_parent' => 0,
'type' => 'virtualpages-custom-type',
'object' => 'virtualpages-object-slug',
'type_label' => '',
'title' => $page['title'],
'url' => home_url( $page['url'] ),
'target' => '',
'attr_title' => '',
'description' => '',
'classes' => array(),
'xfn' => '',
);
}
$walker = new Walker_Nav_Menu_Checklist( );
?>
<div id="virtualpages-plugin-div">
<div id="tabs-panel-virtualpages-plugin-all" class="tabs-panel tabs-panel-active">
<ul id="virtualpages-plugin-checklist-pop" class="categorychecklist form-no-clear" >
<?php
echo walk_nav_menu_tree(
array_map( 'wp_setup_nav_menu_item', $virtualpages_items ), 0, (object) array( 'walker' => $walker )
);
?>
</ul>
<p class="button-controls">
<span class="list-controls">
<a href="<?php
echo esc_url(add_query_arg(
array(
'virtualpages-plugin-all' => 'all',
'selectall' => 1,
)
));
?>#virtualpages-menu-test-metabox" class="select-all"><?php _e( 'Select All' ); ?></a>
</span>
<span class="add-to-menu">
<input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-virtualpages-plugin-menu-item" id="submit-virtualpages-plugin-div" />
<span class="spinner"></span>
</span>
</p>
</div>
</div>
<?php
}
}
new MP_MenuVirtualPages();
Есть идеи о том, что мне не хватает?
1 ответ
Решение:
type
на $virtualpages_items[]
должно быть 'custom'
и не 'type' => 'virtualpages-custom-type',