273 lines
6.1 KiB
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 . '&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 );
|