Exemple #1
0
/**
 * Add the admin menu items for gigs.
 *
 * @since 1.0.0
 */
function audiotheme_gigs_admin_menu()
{
    global $pagenow, $plugin_page, $typenow;
    // Redirect the default Manage Gigs screen.
    if ('audiotheme_gig' === $typenow && 'edit.php' === $pagenow) {
        wp_safe_redirect(esc_url_raw(get_audiotheme_gig_admin_url()));
        exit;
    }
    $gig_object = get_post_type_object('audiotheme_gig');
    $venue_object = get_post_type_object('audiotheme_venue');
    // Remove the default gigs menu item and replace it with the screen using the custom post list table.
    remove_submenu_page('audiotheme-gigs', 'edit.php?post_type=audiotheme_gig');
    $manage_gigs_hook = add_menu_page($gig_object->labels->name, $gig_object->labels->menu_name, 'edit_posts', 'audiotheme-gigs', 'audiotheme_gigs_manage_screen', audiotheme_encode_svg('admin/images/dashicons/gigs.svg'), 512);
    add_submenu_page('audiotheme-gigs', $gig_object->labels->name, $gig_object->labels->all_items, 'edit_posts', 'audiotheme-gigs', 'audiotheme_gigs_manage_screen');
    $edit_gig_hook = add_submenu_page('audiotheme-gigs', $gig_object->labels->add_new_item, $gig_object->labels->add_new, 'edit_posts', 'post-new.php?post_type=audiotheme_gig');
    $manage_venues_hook = add_submenu_page('audiotheme-gigs', $venue_object->labels->name, $venue_object->labels->menu_name, 'edit_posts', 'audiotheme-venues', 'audiotheme_venues_manage_screen');
    $edit_venue_hook = add_submenu_page('audiotheme-gigs', $venue_object->labels->add_new_item, $venue_object->labels->add_new_item, 'edit_posts', 'audiotheme-venue', 'audiotheme_venue_edit_screen');
    add_filter('parent_file', 'audiotheme_gigs_admin_menu_highlight');
    add_action('load-' . $manage_gigs_hook, 'audiotheme_gigs_manage_screen_setup');
    add_action('load-' . $edit_gig_hook, 'audiotheme_gig_edit_screen_setup');
    add_action('load-' . $manage_venues_hook, 'audiotheme_venues_manage_screen_setup');
    add_action('load-' . $edit_venue_hook, 'audiotheme_venue_edit_screen_setup');
}
 /**
  * Process actions.
  *
  * @since 1.0.0
  * @see wp-admin/edit.php
  */
 function process_actions()
 {
     global $wpdb;
     $action = '';
     $current_user = wp_get_current_user();
     $post_type_object = get_post_type_object('audiotheme_gig');
     if (!empty($_REQUEST['ids'])) {
         $post_ids = is_array($_REQUEST['ids']) ? $_REQUEST['ids'] : explode(',', $_REQUEST['ids']);
         $post_ids = array_map('absint', $post_ids);
         $action = $this->current_action();
     }
     $sendback = remove_query_arg(array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer());
     if (!$sendback) {
         $sendback = get_audiotheme_gig_admin_url();
     }
     $sendback = add_query_arg('paged', $this->get_pagenum(), $sendback);
     if (!empty($action)) {
         check_admin_referer('bulk-' . $this->_args['plural']);
         switch ($action) {
             case 'trash':
                 $trashed = 0;
                 foreach ((array) $post_ids as $post_id) {
                     if (!current_user_can($post_type_object->cap->delete_post, $post_id)) {
                         wp_die(__('You are not allowed to move this item to the Trash.', 'audiotheme'));
                     }
                     if (!wp_trash_post($post_id)) {
                         wp_die(__('Error moving to Trash.', 'audiotheme'));
                     }
                     $trashed++;
                 }
                 $sendback = add_query_arg(array('trashed' => $trashed, 'ids' => join(',', $post_ids)), $sendback);
                 break;
             case 'untrash':
                 $untrashed = 0;
                 foreach ((array) $post_ids as $post_id) {
                     if (!current_user_can($post_type_object->cap->delete_post, $post_id)) {
                         wp_die(__('You are not allowed to restore this item from the Trash.', 'audiotheme'));
                     }
                     if (!wp_untrash_post($post_id)) {
                         wp_die(__('Error in restoring from Trash.', 'audiotheme'));
                     }
                     $untrashed++;
                 }
                 $sendback = add_query_arg('untrashed', $untrashed, $sendback);
                 break;
             case 'delete':
                 $deleted = 0;
                 foreach ($post_ids as $post_id) {
                     if (!current_user_can($post_type_object->cap->delete_post, $post_id)) {
                         wp_die(__('You are not allowed to delete this item.', 'audiotheme'));
                     }
                     if (!wp_delete_post($post_id)) {
                         wp_die(__('Error in deleting...', 'audiotheme'));
                     }
                     $deleted++;
                 }
                 $sendback = add_query_arg('deleted', $deleted, $sendback);
             default:
                 break;
         }
         $sendback = remove_query_arg(array('action', 'action2'), $sendback);
         wp_safe_redirect(esc_url_raw($sendback));
         exit;
     }
     if (!empty($_REQUEST['_wp_http_referer'])) {
         $redirect = remove_query_arg(array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']));
         wp_safe_redirect(esc_url_raw($redirect));
         exit;
     }
 }
Exemple #3
0
    }
    if (isset($_REQUEST['skipped']) && (int) $_REQUEST['skipped']) {
        unset($_REQUEST['skipped']);
    }
    if (isset($_REQUEST['locked']) && (int) $_REQUEST['locked']) {
        $messages[] = sprintf(_n('%s item not updated, somebody is editing it.', '%s items not updated, somebody is editing them.', $_REQUEST['locked']), number_format_i18n($_REQUEST['locked']));
        unset($_REQUEST['locked']);
    }
    if (isset($_REQUEST['deleted']) && (int) $_REQUEST['deleted']) {
        $messages[] = sprintf(_n('Item permanently deleted.', '%s items permanently deleted.', $_REQUEST['deleted']), number_format_i18n($_REQUEST['deleted']));
        unset($_REQUEST['deleted']);
    }
    if (isset($_REQUEST['trashed']) && (int) $_REQUEST['trashed']) {
        $messages[] = sprintf(_n('Item moved to the Trash.', '%s items moved to the Trash.', $_REQUEST['trashed']), number_format_i18n($_REQUEST['trashed']));
        $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
        $messages[] = '<a href="' . esc_url(wp_nonce_url(get_audiotheme_gig_admin_url("action=untrash&ids={$ids}"), 'bulk-gigs')) . '">' . __('Undo', 'audiotheme') . '</a>';
        unset($_REQUEST['trashed']);
    }
    if (isset($_REQUEST['untrashed']) && (int) $_REQUEST['untrashed']) {
        $messages[] = sprintf(_n('Item restored from the Trash.', '%s items restored from the Trash.', $_REQUEST['untrashed']), number_format_i18n($_REQUEST['untrashed']));
        unset($_REQUEST['undeleted']);
    }
    if ($messages) {
        echo join(' ', $messages);
    }
    unset($messages);
    $_SERVER['REQUEST_URI'] = remove_query_arg(array('locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed'), $_SERVER['REQUEST_URI']);
    ?>
			</p>
		</div>
	<?php 
 /**
  * Display other columns.
  *
  * @since 1.0.0
  *
  * @param WP_Post $item Venue post object.
  * @param string $column_name The column id to display.
  * @return string Column value for display.
  */
 function column_default($item, $column_name)
 {
     switch ($column_name) {
         case 'gigs':
             $count = get_post_meta($item->ID, '_audiotheme_gig_count', true);
             $admin_url = get_audiotheme_gig_admin_url(array('post_type' => 'audiotheme_gig', 'post_status' => 'any', 'venue' => $item->ID));
             return empty($count) ? $count : sprintf('<a href="%s">%d</a>', $admin_url, $count);
         case 'website':
             return !empty($item->website) ? sprintf(' <a href="%s" class="venue-website-link" target="_blank"><img src="' . AUDIOTHEME_URI . 'admin/images/link.png" width="16" height="16" alt="%s"></a>', esc_url($item->website), esc_attr(__('Visit venue website', 'audiotheme'))) : '';
         default:
             return isset($item->{$column_name}) ? $item->{$column_name} : '';
     }
 }