first commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* Storefront NUX Admin Inbox Messages.
|
||||
*
|
||||
* @package storefront
|
||||
* @since 3.0.0
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Admin\Notes\Note;
|
||||
use Automattic\WooCommerce\Admin\Notes\NoteTraits;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
if ( ! class_exists( 'Storefront_NUX_Admin_Inbox_Messages_Customize' ) ) :
|
||||
/**
|
||||
* The initial Storefront inbox Message.
|
||||
*/
|
||||
class Storefront_NUX_Admin_Inbox_Messages_Customize {
|
||||
|
||||
use NoteTraits;
|
||||
|
||||
/**
|
||||
* Name of the note for use in the database.
|
||||
*/
|
||||
const NOTE_NAME = 'storefront-customize';
|
||||
|
||||
/**
|
||||
* Get the note.
|
||||
*
|
||||
* @return Note
|
||||
*/
|
||||
public static function get_note() {
|
||||
$note = new Note();
|
||||
$note->set_title( __( 'Design your store with Storefront 🎨', 'storefront' ) );
|
||||
$note->set_content( __( 'Visit the Storefront settings page to start setup and customization of your shop.', 'storefront' ) );
|
||||
$note->set_type( Note::E_WC_ADMIN_NOTE_INFORMATIONAL );
|
||||
$note->set_name( self::NOTE_NAME );
|
||||
$note->set_content_data( (object) array() );
|
||||
$note->set_source( 'storefront' );
|
||||
$note->add_action(
|
||||
'customize-store-with-storefront',
|
||||
__( 'Let\'s go!', 'storefront' ),
|
||||
admin_url( 'themes.php?page=storefront-welcome' ),
|
||||
Note::E_WC_ADMIN_NOTE_ACTIONED,
|
||||
true
|
||||
);
|
||||
return $note;
|
||||
}
|
||||
}
|
||||
endif;
|
||||
@@ -0,0 +1,377 @@
|
||||
<?php
|
||||
/**
|
||||
* Storefront NUX Admin Class
|
||||
*
|
||||
* @package storefront
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'Storefront_NUX_Admin' ) ) :
|
||||
|
||||
/**
|
||||
* The Storefront NUX Admin class
|
||||
*/
|
||||
class Storefront_NUX_Admin {
|
||||
/**
|
||||
* Setup class.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
||||
|
||||
/*
|
||||
* In case the WC Admin inbox is not available, show the admin notice.
|
||||
*/
|
||||
if ( $this->is_inbox_available() ) {
|
||||
add_action( 'admin_notices', array( $this, 'admin_inbox_messages' ), 99 );
|
||||
} else {
|
||||
add_action( 'admin_notices', array( $this, 'admin_notices' ), 99 );
|
||||
}
|
||||
add_action( 'wp_ajax_storefront_dismiss_notice', array( $this, 'dismiss_nux' ) );
|
||||
|
||||
add_action( 'admin_post_storefront_starter_content', array( $this, 'redirect_customizer' ) );
|
||||
add_action( 'init', array( $this, 'log_fresh_site_state' ) );
|
||||
add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if WC Admin inbox is available. It might not be available if
|
||||
* WooCommerce is not installed, in old versions of WC or if wc-admin
|
||||
* has been disabled.
|
||||
*
|
||||
* @since 3.3.0
|
||||
*/
|
||||
private function is_inbox_available() {
|
||||
if (
|
||||
function_exists( 'WC' ) &&
|
||||
is_callable( array( WC(), 'is_wc_admin_active' ) ) &&
|
||||
WC()->is_wc_admin_active() &&
|
||||
version_compare( WC_VERSION, '4.8.0', '>=' )
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue scripts.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function enqueue_scripts() {
|
||||
global $wp_customize, $storefront_version;
|
||||
|
||||
if ( isset( $wp_customize ) || true === (bool) get_option( 'storefront_nux_dismissed' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
|
||||
|
||||
wp_enqueue_style( 'storefront-admin-nux', get_template_directory_uri() . '/assets/css/admin/admin.css', '', $storefront_version );
|
||||
wp_style_add_data( 'storefront-admin-nux', 'rtl', 'replace' );
|
||||
|
||||
wp_enqueue_script( 'storefront-admin-nux', get_template_directory_uri() . '/assets/js/admin/admin' . $suffix . '.js', array( 'jquery' ), $storefront_version, 'all' );
|
||||
|
||||
$storefront_nux = array(
|
||||
'nonce' => wp_create_nonce( 'storefront_notice_dismiss' ),
|
||||
);
|
||||
|
||||
wp_localize_script( 'storefront-admin-nux', 'storefrontNUX', $storefront_nux );
|
||||
}
|
||||
|
||||
/**
|
||||
* Output admin notices.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function admin_notices() {
|
||||
global $pagenow;
|
||||
|
||||
if ( true === (bool) get_option( 'storefront_nux_dismissed' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Coming from the WooCommerce Wizard?
|
||||
if ( wp_get_referer() && 0 === strpos( basename( wp_get_referer() ), 'index.php?page=wc-setup' ) && 'post-new.php' === $pagenow ) {
|
||||
return;
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="notice notice-info sf-notice-nux is-dismissible">
|
||||
<span class="sf-icon">
|
||||
<?php echo '<img src="' . esc_url( get_template_directory_uri() ) . '/assets/images/admin/storefront-icon.svg" alt="Storefront" width="250" />'; ?>
|
||||
</span>
|
||||
<?php
|
||||
self::admin_notices_content();
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Admin notices body.
|
||||
* Extracted to a separate static function to be usable in other than admin_notice context.
|
||||
*
|
||||
* @since 3.0.0
|
||||
*/
|
||||
public static function admin_notices_content() {
|
||||
global $pagenow;
|
||||
?>
|
||||
<div class="notice-content">
|
||||
<?php if ( ! storefront_is_woocommerce_activated() && current_user_can( 'install_plugins' ) && current_user_can( 'activate_plugins' ) ) : ?>
|
||||
<h2><?php esc_html_e( 'Thanks for installing Storefront, you rock! 🤘', 'storefront' ); ?></h2>
|
||||
<p><?php esc_html_e( 'To enable eCommerce features you need to install the WooCommerce plugin.', 'storefront' ); ?></p>
|
||||
<p><?php Storefront_Plugin_Install::install_plugin_button( 'woocommerce', 'woocommerce.php', 'WooCommerce', array(), __( 'WooCommerce activated', 'storefront' ), __( 'Activate WooCommerce', 'storefront' ), __( 'Install WooCommerce', 'storefront' ) ); ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( storefront_is_woocommerce_activated() ) : ?>
|
||||
<h2><?php esc_html_e( 'Design your store 🎨', 'storefront' ); ?></h2>
|
||||
<p>
|
||||
<?php
|
||||
if ( true === (bool) get_option( 'storefront_nux_fresh_site' ) && 'post-new.php' === $pagenow ) {
|
||||
echo esc_html__( 'Before you add your first product let\'s design your store. We\'ll add some example products for you. When you\'re ready let\'s get started by adding your logo.', 'storefront' );
|
||||
} else {
|
||||
echo esc_html__( 'You\'ve set up WooCommerce, now it\'s time to give it some style! Let\'s get started by entering the Customizer and adding your logo.', 'storefront' );
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<form action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>" method="post">
|
||||
<input type="hidden" name="action" value="storefront_starter_content">
|
||||
<?php wp_nonce_field( 'storefront_starter_content' ); ?>
|
||||
|
||||
<?php if ( true === (bool) get_option( 'storefront_nux_fresh_site' ) ) : ?>
|
||||
<input type="hidden" name="homepage" value="on">
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( true === (bool) get_option( 'storefront_nux_fresh_site' ) && self::is_woocommerce_empty() ) : ?>
|
||||
<input type="hidden" name="products" value="on">
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( false === (bool) get_option( 'storefront_nux_fresh_site' ) ) : ?>
|
||||
<div class="notice-input">
|
||||
<label>
|
||||
<input type="checkbox" name="homepage" checked>
|
||||
<?php
|
||||
if ( 'page' === get_option( 'show_on_front' ) ) {
|
||||
esc_html_e( 'Apply the Storefront homepage template', 'storefront' );
|
||||
} else {
|
||||
esc_html_e( 'Create a homepage using Storefront\'s homepage template', 'storefront' );
|
||||
}
|
||||
?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<?php if ( self::is_woocommerce_empty() ) : ?>
|
||||
<div class="notice-input">
|
||||
<label>
|
||||
<input type="checkbox" name="products" checked>
|
||||
<?php esc_html_e( 'Add example products', 'storefront' ); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<input type="submit" name="storefront-guided-tour" class="sf-nux-button" value="<?php esc_attr_e( 'Let\'s go!', 'storefront' ); ?>">
|
||||
<a href="#" class="sf-nux-dismiss-button" ><?php esc_html_e( 'Skip', 'storefront' ); ?></a>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX dismiss notice.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function dismiss_nux() {
|
||||
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_key( wp_unslash( $_POST['nonce'] ) ), 'storefront_notice_dismiss' ) || ! current_user_can( 'manage_options' ) ) { // WPCS: input var ok.
|
||||
die();
|
||||
}
|
||||
|
||||
update_option( 'storefront_nux_dismissed', true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints Storefront inbox messages.
|
||||
*
|
||||
* @since 3.0.0
|
||||
*/
|
||||
public function admin_inbox_messages() {
|
||||
// The setup already has happened. No inbox message needed.
|
||||
if ( true === (bool) get_option( 'storefront_nux_dismissed' ) ) {
|
||||
return;
|
||||
}
|
||||
// Storefront settings page link and welcome message.
|
||||
require 'class-storefront-nux-admin-inbox-messages-customize.php';
|
||||
Storefront_NUX_Admin_Inbox_Messages_Customize::possibly_add_note();
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirects to the customizer with the correct variables.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function redirect_customizer() {
|
||||
check_admin_referer( 'storefront_starter_content' );
|
||||
|
||||
if ( current_user_can( 'manage_options' ) ) {
|
||||
|
||||
// Dismiss notice.
|
||||
update_option( 'storefront_nux_dismissed', true );
|
||||
}
|
||||
|
||||
$args = array( 'sf_starter_content' => '1' );
|
||||
|
||||
$tasks = array();
|
||||
|
||||
if ( ! empty( $_REQUEST['homepage'] ) && 'on' === sanitize_text_field( wp_unslash( $_REQUEST['homepage'] ) ) ) { // WPCS: input var ok.
|
||||
if ( current_user_can( 'edit_pages' ) && 'page' === get_option( 'show_on_front' ) ) {
|
||||
$this->assign_page_template( get_option( 'page_on_front' ), 'template-homepage.php' );
|
||||
} else {
|
||||
$tasks[] = 'homepage';
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! empty( $_REQUEST['products'] ) && 'on' === sanitize_text_field( wp_unslash( $_REQUEST['products'] ) ) ) { // WPCS: input var ok.
|
||||
$tasks[] = 'products';
|
||||
}
|
||||
|
||||
if ( ! empty( $tasks ) ) {
|
||||
$args['sf_tasks'] = implode( ',', $tasks );
|
||||
|
||||
if ( current_user_can( 'manage_options' ) ) {
|
||||
|
||||
// Make sure the fresh_site flag is set to true.
|
||||
update_option( 'fresh_site', true );
|
||||
|
||||
if ( current_user_can( 'edit_pages' ) && true === (bool) get_option( 'storefront_nux_fresh_site' ) ) {
|
||||
$this->set_woocommerce_pages_full_width();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect to the Storefront Welcome screen when exiting the Customizer.
|
||||
$args['return'] = rawurlencode( admin_url( 'themes.php?page=storefront-welcome' ) );
|
||||
|
||||
wp_safe_redirect( add_query_arg( $args, admin_url( 'customize.php' ) ) );
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get WooCommerce page ids.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public static function get_woocommerce_pages() {
|
||||
$woocommerce_pages = array();
|
||||
|
||||
$wc_pages_options = apply_filters(
|
||||
'storefront_page_option_names',
|
||||
array(
|
||||
'woocommerce_cart_page_id',
|
||||
'woocommerce_checkout_page_id',
|
||||
'woocommerce_myaccount_page_id',
|
||||
'woocommerce_shop_page_id',
|
||||
'woocommerce_terms_page_id',
|
||||
)
|
||||
);
|
||||
|
||||
foreach ( $wc_pages_options as $option ) {
|
||||
$page_id = get_option( $option );
|
||||
|
||||
if ( ! empty( $page_id ) ) {
|
||||
$page_id = intval( $page_id );
|
||||
|
||||
if ( null !== get_post( $page_id ) ) {
|
||||
$woocommerce_pages[ $option ] = $page_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $woocommerce_pages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Storefront fresh site flag.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function log_fresh_site_state() {
|
||||
if ( null === get_option( 'storefront_nux_fresh_site', null ) ) {
|
||||
update_option( 'storefront_nux_fresh_site', get_option( 'fresh_site' ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add custom classes to the list of admin body classes.
|
||||
*
|
||||
* @since 2.2.0
|
||||
* @param string $classes Classes for the admin body element.
|
||||
* @return string
|
||||
*/
|
||||
public function admin_body_class( $classes ) {
|
||||
if ( true === (bool) get_option( 'storefront_nux_dismissed' ) ) {
|
||||
return $classes;
|
||||
}
|
||||
|
||||
$classes .= ' sf-nux ';
|
||||
|
||||
return $classes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set WooCommerce pages to use the full width template.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
private function set_woocommerce_pages_full_width() {
|
||||
$wc_pages = $this->get_woocommerce_pages();
|
||||
|
||||
foreach ( $wc_pages as $option => $page_id ) {
|
||||
$this->assign_page_template( $page_id, 'template-fullwidth.php' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a page id assign a given page template to it.
|
||||
*
|
||||
* @since 2.2.0
|
||||
* @param int $page_id Page id.
|
||||
* @param string $template Template file name.
|
||||
* @return void|bool Returns false if $page_id or $template is empty.
|
||||
*/
|
||||
private function assign_page_template( $page_id, $template ) {
|
||||
if ( empty( $page_id ) || empty( $template ) || '' === locate_template( $template ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
update_post_meta( $page_id, '_wp_page_template', $template );
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if WooCommerce is empty.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private static function is_woocommerce_empty() {
|
||||
$products = wp_count_posts( 'product' );
|
||||
|
||||
if ( 0 < $products->publish ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
return new Storefront_NUX_Admin();
|
||||
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
/**
|
||||
* Storefront NUX Guided Tour Class
|
||||
*
|
||||
* @package storefront
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ! class_exists( 'Storefront_NUX_Guided_Tour' ) ) :
|
||||
|
||||
/**
|
||||
* The Storefront NUX Guided Tour class
|
||||
*/
|
||||
class Storefront_NUX_Guided_Tour {
|
||||
/**
|
||||
* Setup class.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action( 'admin_init', array( $this, 'customizer' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Customizer.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function customizer() {
|
||||
global $pagenow;
|
||||
|
||||
if ( 'customize.php' === $pagenow && false === (bool) get_option( 'storefront_nux_guided_tour', false ) ) {
|
||||
add_action( 'customize_controls_enqueue_scripts', array( $this, 'customize_scripts' ) );
|
||||
add_action( 'customize_controls_print_footer_scripts', array( $this, 'print_templates' ) );
|
||||
|
||||
if ( current_user_can( 'manage_options' ) ) {
|
||||
|
||||
// Set Guided Tour flag so it doesn't show up again.
|
||||
update_option( 'storefront_nux_guided_tour', true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Customizer enqueues.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function customize_scripts() {
|
||||
global $storefront_version;
|
||||
|
||||
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
|
||||
|
||||
wp_enqueue_style( 'sp-guided-tour', get_template_directory_uri() . '/assets/css/admin/customizer/customizer.css', array(), $storefront_version, 'all' );
|
||||
wp_style_add_data( 'sp-guided-tour', 'rtl', 'replace' );
|
||||
|
||||
wp_enqueue_script( 'sf-guided-tour', get_template_directory_uri() . '/assets/js/admin/customizer' . $suffix . '.js', array( 'jquery', 'wp-backbone' ), $storefront_version, true );
|
||||
|
||||
wp_localize_script( 'sf-guided-tour', '_wpCustomizeSFGuidedTourSteps', $this->guided_tour_steps() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Template for steps.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function print_templates() {
|
||||
?>
|
||||
<script type="text/html" id="tmpl-sf-guided-tour-step">
|
||||
<div class="sf-guided-tour-step">
|
||||
<# if ( data.title ) { #>
|
||||
<h2>{{ data.title }}</h2>
|
||||
<# } #>
|
||||
{{{ data.message }}}
|
||||
<a class="sf-nux-button" href="#">
|
||||
<# if ( data.button_text ) { #>
|
||||
{{ data.button_text }}
|
||||
<# } else { #>
|
||||
<?php esc_attr_e( 'Next', 'storefront' ); ?>
|
||||
<# } #>
|
||||
</a>
|
||||
<# if ( ! data.last_step ) { #>
|
||||
<a class="sf-guided-tour-skip" href="#">
|
||||
<# if ( data.first_step ) { #>
|
||||
<?php esc_attr_e( 'No thanks, skip the tour', 'storefront' ); ?>
|
||||
<# } else { #>
|
||||
<?php esc_attr_e( 'Skip this step', 'storefront' ); ?>
|
||||
<# } #>
|
||||
</a>
|
||||
<# } #>
|
||||
</div>
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Guided tour steps.
|
||||
*
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public function guided_tour_steps() {
|
||||
$steps = array();
|
||||
|
||||
$steps[] = array(
|
||||
'title' => __( 'Welcome to the Customizer', 'storefront' ),
|
||||
/* translators: %s: 'End Of Line' symbol */
|
||||
'message' => sprintf( __( 'Here you can control the overall look and feel of your store.%sTo get started, let\'s add your logo', 'storefront' ), PHP_EOL . PHP_EOL ),
|
||||
'button_text' => __( 'Let\'s go!', 'storefront' ),
|
||||
'section' => '#customize-info',
|
||||
);
|
||||
|
||||
if ( ! has_custom_logo() ) {
|
||||
$steps[] = array(
|
||||
'title' => __( 'Add your logo', 'storefront' ),
|
||||
'message' => __( 'Open the Site Identity Panel, then click the \'Select Logo\' button to upload your logo.', 'storefront' ),
|
||||
'section' => 'title_tagline',
|
||||
);
|
||||
}
|
||||
|
||||
$steps[] = array(
|
||||
'title' => __( 'Customize your navigation menus', 'storefront' ),
|
||||
'message' => __( 'Organize your menus by adding Pages, Categories, Tags, and Custom Links.', 'storefront' ),
|
||||
'section' => 'nav_menus',
|
||||
);
|
||||
|
||||
$steps[] = array(
|
||||
'title' => __( 'Choose your accent color', 'storefront' ),
|
||||
'message' => __( 'In the typography panel you can specify an accent color which will be applied to things like links and star ratings. We recommend using your brand color for this setting.', 'storefront' ),
|
||||
'section' => 'storefront_typography',
|
||||
);
|
||||
|
||||
$steps[] = array(
|
||||
'title' => __( 'Color your buttons', 'storefront' ),
|
||||
'message' => __( 'Choose colors for your button backgrounds and text. Once again, brand colors are good choices here.', 'storefront' ),
|
||||
'section' => 'storefront_buttons',
|
||||
);
|
||||
|
||||
$steps[] = array(
|
||||
'title' => '',
|
||||
/* translators: 1: open <strong> tag, 2: close <strong> tag, 3: 'End Of Line' symbol */
|
||||
'message' => sprintf( __( 'All set! Remember to %1$ssave & publish%2$s your changes when you\'re done.%3$sYou can return to your dashboard by clicking the X in the top left corner.', 'storefront' ), '<strong>', '</strong>', PHP_EOL . PHP_EOL ),
|
||||
'section' => '#customize-header-actions .save',
|
||||
'button_text' => __( 'Done', 'storefront' ),
|
||||
);
|
||||
|
||||
return $steps;
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
|
||||
return new Storefront_NUX_Guided_Tour();
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user