laipower/wp-content/plugins/easy-digital-downloads/includes/admin/admin-actions.php

273 lines
6.1 KiB
PHP

<?php
/**
* Admin Actions
*
* @package EDD
* @subpackage Admin/Actions
* @copyright Copyright (c) 2018, Easy Digital Downloads, LLC
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 1.0
*/
// Exit if accessed directly
defined( 'ABSPATH' ) || exit;
/**
* Processes all EDD actions sent via POST and GET by looking for the 'edd-action'
* request and running do_action() to call the function
*
* @since 1.0
* @return void
*/
function edd_process_actions() {
if ( isset( $_POST['edd-action'] ) ) {
do_action( 'edd_' . $_POST['edd-action'], $_POST );
}
if ( isset( $_GET['edd-action'] ) ) {
do_action( 'edd_' . $_GET['edd-action'], $_GET );
}
}
add_action( 'admin_init', 'edd_process_actions' );
/**
* When the Download list table loads, call the function to view our tabs.
*
* @since 2.8.9
* @since 2.11.3 Unhooked this to revert to standard admin H1 tags.
* @since 3.0 Added back as download categories/tags have been removed from the admin menu.
* @param $views
*
* @return mixed
*/
function edd_products_tabs( $views ) {
edd_display_product_tabs();
return $views;
}
add_filter( 'views_edit-download', 'edd_products_tabs', 10, 1 );
/**
* When the Download list table loads, call the function to view our tabs.
*
* @since 3.0
*
* @return void
*/
function edd_taxonomies_tabs() {
// Bail if not viewing a taxonomy
if ( empty( $_GET['taxonomy'] ) ) {
return;
}
// Get taxonomies
$taxonomy = sanitize_key( $_GET['taxonomy'] );
$taxonomies = get_object_taxonomies( 'download' );
// Bail if current taxonomy is not a download taxonomy
if ( ! in_array( $taxonomy, $taxonomies, true ) ) {
return;
}
// Output the tabs
edd_display_product_tabs();
}
add_action( 'admin_notices', 'edd_taxonomies_tabs', 10, 1 );
/**
* Remove the top level taxonomy submenus.
*
* Since 3.0, these links were moved to horizontal tabs.
*
* @since 3.0
*/
function edd_admin_adjust_submenus() {
// Get taxonomies
$taxonomies = get_object_taxonomies( 'download' );
// Bail if no taxonomies
if ( empty( $taxonomies ) ) {
return;
}
// Loop through each taxonomy and remove the menu
foreach ( $taxonomies as $taxonomy ) {
remove_submenu_page( 'edit.php?post_type=download', 'edit-tags.php?taxonomy=' . $taxonomy . '&amp;post_type=download' );
}
}
add_action( 'admin_menu', 'edd_admin_adjust_submenus', 999 );
/**
* This tells WordPress to highlight the Downloads > Downloads submenu,
* regardless of which actual Downloads Taxonomy screen we are on.
*
* The conditional prevents the override when the user is viewing settings or
* any third-party plugins.
*
* @since 3.0.0
*
* @global string $submenu_file
*/
function edd_taxonomies_modify_menu_highlight() {
global $submenu_file;
// Bail if not viewing a taxonomy
if ( empty( $_GET['taxonomy'] ) ) {
return;
}
// Get taxonomies
$taxonomy = sanitize_key( $_GET['taxonomy'] );
$taxonomies = get_object_taxonomies( 'download' );
// Bail if current taxonomy is not a download taxonomy
if ( ! in_array( $taxonomy, $taxonomies, true ) ) {
return;
}
// Force the submenu file
$submenu_file = 'edit.php?post_type=download';
}
add_filter( 'admin_head', 'edd_taxonomies_modify_menu_highlight', 9999 );
/**
* This tells WordPress to highlight the Downloads > Downloads submenu when
* adding a new product.
*
* @since 3.0.0
*
* @global string $submenu_file
*/
function edd_add_new_modify_menu_highlight() {
global $submenu_file, $pagenow;
// Bail if not viewing the right page or post type
if ( empty( $_GET['post_type'] ) || ( 'post-new.php' !== $pagenow ) ) {
return;
}
// Get post_type
$post_type = sanitize_key( $_GET['post_type'] );
// Bail if current post type is not download
if ( 'download' !== $post_type ) {
return;
}
// Force the submenu file
$submenu_file = 'edit.php?post_type=download';
}
add_filter( 'admin_head', 'edd_add_new_modify_menu_highlight', 9999 );
/**
* Displays the product tabs for Products, Categories, and Tags
*
* @since 2.8.9
*/
function edd_display_product_tabs() {
// Initial tabs
$tabs = array(
'products' => array(
'name' => edd_get_label_plural(),
'url' => edd_get_admin_url(),
),
);
// Get taxonomies
$taxonomies = get_object_taxonomies( 'download', 'objects' );
foreach ( $taxonomies as $tax => $details ) {
$tabs[ $tax ] = array(
'name' => $details->labels->menu_name,
'url' => add_query_arg( array(
'taxonomy' => sanitize_key( $tax ),
'post_type' => 'download'
), admin_url( 'edit-tags.php' ) )
);
}
// Filter the tabs
$tabs = apply_filters( 'edd_add_ons_tabs', $tabs );
// Taxonomies
if ( isset( $_GET['taxonomy'] ) && in_array( $_GET['taxonomy'], array_keys( $taxonomies ), true ) ) {
$active_tab = $_GET['taxonomy'];
// Default to Products
} else {
$active_tab = 'products';
}
// Start a buffer
ob_start();
?>
<nav class="nav-tab-wrapper wp-clearfix" aria-label="<?php esc_attr_e( 'Secondary menu', 'easy-digital-downloads' ); ?>">
<?php
foreach ( $tabs as $tab_id => $tab ) {
$class = 'nav-tab';
if ( $active_tab === $tab_id ) {
$class .= ' nav-tab-active';
}
printf(
'<a href="%s" class="%s">%s</a>',
esc_url( $tab['url'] ),
esc_attr( $class ),
esc_html( $tab['name'] )
);
} ?>
</nav>
<br />
<?php
// Output the current buffer
echo ob_get_clean();
}
/**
* Return array of query arguments that should be removed from URLs.
*
* @since 3.0
*
* @return array
*/
function edd_admin_removable_query_args() {
return apply_filters( 'edd_admin_removable_query_args', array(
'edd-action',
'edd-notice',
'edd-message',
'edd-redirect'
) );
}
/**
* Output payment icons into the admin footer.
*
* Specifically on the "General" tab of the "Payment Gateways" admin page.
*
* @since 3.0
*/
function edd_admin_print_payment_icons() {
// Bail if not the gateways page
if ( ! edd_is_admin_page( 'settings', 'gateways' ) ) {
return;
}
// Output the SVG icons
edd_print_payment_icons( array(
'mastercard',
'visa',
'americanexpress',
'discover',
'paypal',
'amazon'
) );
}
add_action( 'admin_footer', 'edd_admin_print_payment_icons', 9999 );