first commit
This commit is contained in:
@@ -0,0 +1,446 @@
|
||||
<?php
|
||||
/**
|
||||
* Add theme dashboard page
|
||||
*/
|
||||
/**
|
||||
* Get theme actions required
|
||||
*
|
||||
* @return array|mixed|void
|
||||
*/
|
||||
if (!function_exists('envo_extra_get_actions_required')) :
|
||||
|
||||
function envo_extra_get_actions_required() {
|
||||
|
||||
$actions = array();
|
||||
$actions['recommend_plugins'] = 'dismiss';
|
||||
|
||||
$recommend_plugins = get_theme_support('recommend-plugins');
|
||||
if (is_array($recommend_plugins) && isset($recommend_plugins[0])) {
|
||||
$recommend_plugins = $recommend_plugins[0];
|
||||
} else {
|
||||
$recommend_plugins[] = array();
|
||||
}
|
||||
|
||||
if (!empty($recommend_plugins)) {
|
||||
|
||||
foreach ($recommend_plugins as $plugin_slug => $plugin_info) {
|
||||
$plugin_info = wp_parse_args($plugin_info, array(
|
||||
'name' => '',
|
||||
'active_filename' => '',
|
||||
));
|
||||
if ($plugin_info['active_filename']) {
|
||||
$active_file_name = $plugin_info['active_filename'];
|
||||
} else {
|
||||
$active_file_name = $plugin_slug . '/' . $plugin_slug . '.php';
|
||||
}
|
||||
if (!is_plugin_active($active_file_name)) {
|
||||
$actions['recommend_plugins'] = 'active';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$actions = apply_filters('envo_extra_get_actions_required', $actions);
|
||||
$hide_by_click = get_option('envo_extra_actions_dismiss');
|
||||
if (!is_array($hide_by_click)) {
|
||||
$hide_by_click = array();
|
||||
}
|
||||
|
||||
$n_active = $n_dismiss = 0;
|
||||
$number_notice = 0;
|
||||
foreach ($actions as $k => $v) {
|
||||
if (!isset($hide_by_click[$k])) {
|
||||
$hide_by_click[$k] = false;
|
||||
}
|
||||
|
||||
if ($v == 'active') {
|
||||
$n_active ++;
|
||||
$number_notice ++;
|
||||
if ($hide_by_click[$k]) {
|
||||
if ($hide_by_click[$k] == 'hide') {
|
||||
$number_notice --;
|
||||
}
|
||||
}
|
||||
} else if ($v == 'dismiss') {
|
||||
$n_dismiss ++;
|
||||
}
|
||||
}
|
||||
|
||||
$return = array(
|
||||
'actions' => $actions,
|
||||
'number_actions' => count($actions),
|
||||
'number_active' => $n_active,
|
||||
'number_dismiss' => $n_dismiss,
|
||||
'hide_by_click' => $hide_by_click,
|
||||
'number_notice' => $number_notice,
|
||||
);
|
||||
if ($return['number_notice'] < 0) {
|
||||
$return['number_notice'] = 0;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
endif;
|
||||
add_action('switch_theme', 'envo_extra_reset_actions_required');
|
||||
|
||||
function envo_extra_reset_actions_required() {
|
||||
delete_option('envo_extra_actions_dismiss');
|
||||
}
|
||||
|
||||
if (!function_exists('envo_extra_admin_scripts')) :
|
||||
|
||||
/**
|
||||
* Enqueue scripts for admin page only: Theme info page
|
||||
*/
|
||||
function envo_extra_admin_scripts($hook) {
|
||||
wp_enqueue_style('enwoo-admin-css', ENVO_EXTRA_PLUGIN_URL . '/css/admin/admin.css');
|
||||
if ($hook === 'appearance_page_et_enwoo') {
|
||||
// Add recommend plugin css
|
||||
wp_enqueue_style('plugin-install');
|
||||
wp_enqueue_script('plugin-install');
|
||||
wp_enqueue_script('updates');
|
||||
add_thickbox();
|
||||
}
|
||||
}
|
||||
|
||||
endif;
|
||||
add_action('admin_enqueue_scripts', 'envo_extra_admin_scripts');
|
||||
|
||||
add_action('admin_menu', 'envo_extra_theme_info');
|
||||
|
||||
function envo_extra_theme_info() {
|
||||
|
||||
$actions = envo_extra_get_actions_required();
|
||||
$number_count = $actions['number_notice'];
|
||||
|
||||
if ($number_count > 0) {
|
||||
/* translators: %1$s: replaced with number (counter) */
|
||||
$update_label = sprintf(_n('%1$s action required', '%1$s actions required', $number_count, 'envo-extra'), $number_count);
|
||||
$count = "<span class='update-plugins count-" . esc_attr($number_count) . "' title='" . esc_attr($update_label) . "'><span class='update-count'>" . number_format_i18n($number_count) . "</span></span>";
|
||||
/* translators: %s: replaced with number (counter) */
|
||||
$menu_title = sprintf(esc_html__('Enwoo theme %s', 'envo-extra'), $count);
|
||||
} else {
|
||||
$menu_title = esc_html__('Enwoo theme', 'envo-extra');
|
||||
}
|
||||
|
||||
add_theme_page(esc_html__('Enwoo dashboard', 'envo-extra'), $menu_title, 'edit_theme_options', 'et_enwoo', 'envo_extra_theme_info_page');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add admin notice when active theme, just show one time
|
||||
*
|
||||
* @return bool|null
|
||||
*/
|
||||
add_action('admin_notices', 'envo_extra_admin_notice');
|
||||
|
||||
function envo_extra_admin_notice() {
|
||||
global $current_user;
|
||||
$user_id = $current_user->ID;
|
||||
$theme_data = wp_get_theme();
|
||||
if (!get_user_meta($user_id, esc_html($theme_data->get('TextDomain')) . '_notice_ignore')) {
|
||||
?>
|
||||
<div class="notice notice-success enwoo-notice">
|
||||
|
||||
<h1>
|
||||
<?php
|
||||
/* translators: %1$s: theme name, %2$s theme version */
|
||||
printf(esc_html__('Welcome to %1$s - Version %2$s', 'envo-extra'), esc_html($theme_data->Name), esc_html($theme_data->Version));
|
||||
?>
|
||||
</h1>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
/* translators: %1$s: theme name, %2$s link */
|
||||
printf(__('Welcome! Thank you for choosing %1$s! To fully take advantage of the best our theme can offer please make sure you visit our <a href="%2$s">Welcome page</a>', 'envo-extra'), esc_html($theme_data->Name), esc_url(admin_url('themes.php?page=et_enwoo')));
|
||||
printf('<a href="%1$s" class="notice-dismiss dashicons dashicons-dismiss dashicons-dismiss-icon"></a>', '?' . esc_html($theme_data->get('TextDomain')) . '_notice_ignore=0');
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<a href="<?php echo esc_url(admin_url('themes.php?page=et_enwoo')) ?>" class="button button-primary button-hero" style="text-decoration: none;">
|
||||
<?php
|
||||
/* translators: %s theme name */
|
||||
printf(esc_html__('Get started with %s', 'envo-extra'), esc_html($theme_data->Name))
|
||||
?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
add_action('admin_init', 'envo_extra_notice_ignore');
|
||||
|
||||
function envo_extra_notice_ignore() {
|
||||
global $current_user;
|
||||
$theme_data = wp_get_theme();
|
||||
$user_id = $current_user->ID;
|
||||
/* If user clicks to ignore the notice, add that to their user meta */
|
||||
if (isset($_GET[esc_html($theme_data->get('TextDomain')) . '_notice_ignore']) && '0' == $_GET[esc_html($theme_data->get('TextDomain')) . '_notice_ignore']) {
|
||||
add_user_meta($user_id, esc_html($theme_data->get('TextDomain')) . '_notice_ignore', 'true', true);
|
||||
}
|
||||
}
|
||||
|
||||
function envo_extra_render_recommend_plugins($recommend_plugins = array()) {
|
||||
foreach ($recommend_plugins as $plugin_slug => $plugin_info) {
|
||||
$plugin_info = wp_parse_args($plugin_info, array(
|
||||
'name' => '',
|
||||
'active_filename' => '',
|
||||
'description' => '',
|
||||
));
|
||||
$plugin_name = $plugin_info['name'];
|
||||
$plugin_desc = $plugin_info['description'];
|
||||
$status = is_dir(WP_PLUGIN_DIR . '/' . $plugin_slug);
|
||||
$button_class = 'install-now button';
|
||||
if ($plugin_info['active_filename']) {
|
||||
$active_file_name = $plugin_info['active_filename'];
|
||||
} else {
|
||||
$active_file_name = $plugin_slug . '/' . $plugin_slug . '.php';
|
||||
}
|
||||
|
||||
if (!is_plugin_active($active_file_name)) {
|
||||
$button_txt = __('Install Now', 'envo-extra');
|
||||
if (!$status) {
|
||||
$install_url = wp_nonce_url(
|
||||
add_query_arg(
|
||||
array(
|
||||
'action' => 'install-plugin',
|
||||
'plugin' => $plugin_slug
|
||||
), network_admin_url('update.php')
|
||||
), 'install-plugin_' . $plugin_slug
|
||||
);
|
||||
} else {
|
||||
$install_url = add_query_arg(array(
|
||||
'action' => 'activate',
|
||||
'plugin' => rawurlencode($active_file_name),
|
||||
'plugin_status' => 'all',
|
||||
'paged' => '1',
|
||||
'_wpnonce' => wp_create_nonce('activate-plugin_' . $active_file_name),
|
||||
), network_admin_url('plugins.php'));
|
||||
$button_class = 'activate-now button-primary';
|
||||
$button_txt = __('Activate', 'envo-extra');
|
||||
}
|
||||
|
||||
$detail_link = add_query_arg(
|
||||
array(
|
||||
'tab' => 'plugin-information',
|
||||
'plugin' => $plugin_slug,
|
||||
'TB_iframe' => 'true',
|
||||
'width' => '772',
|
||||
'height' => '349',
|
||||
), network_admin_url('plugin-install.php')
|
||||
);
|
||||
|
||||
echo '<div class="rcp">';
|
||||
echo '<h4 class="rcp-name">';
|
||||
echo esc_html($plugin_name);
|
||||
echo '</h4>';
|
||||
echo '<p class="rcp-desc">';
|
||||
echo wp_kses_post($plugin_desc);
|
||||
echo '</p>';
|
||||
echo '<p class="action-btn plugin-card-' . esc_attr($plugin_slug) . '"><a href="' . esc_url($install_url) . '" data-slug="' . esc_attr($plugin_slug) . '" class="' . esc_attr($button_class) . '">' . esc_html($button_txt) . '</a></p>';
|
||||
echo '<a class="plugin-detail thickbox open-plugin-details-modal" href="' . esc_url($detail_link) . '">' . esc_html__('Details', 'envo-extra') . '</a>';
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function envo_extra_admin_dismiss_actions() {
|
||||
// Action for dismiss
|
||||
if (isset($_GET['envo_extra_action_notice'])) {
|
||||
$actions_dismiss = get_option('envo_extra_actions_dismiss');
|
||||
if (!is_array($actions_dismiss)) {
|
||||
$actions_dismiss = array();
|
||||
}
|
||||
$action_key = sanitize_text_field(wp_unslash($_GET['envo_extra_action_notice']));
|
||||
if (isset($actions_dismiss[$action_key]) && $actions_dismiss[$action_key] == 'hide') {
|
||||
$actions_dismiss[$action_key] = 'show';
|
||||
} else {
|
||||
$actions_dismiss[$action_key] = 'hide';
|
||||
}
|
||||
update_option('envo_extra_actions_dismiss', $actions_dismiss);
|
||||
$url = null;
|
||||
if (isset($_SERVER['REQUEST_URI'])) { // Input var okay.
|
||||
$url = sanitize_text_field(wp_unslash($_SERVER['REQUEST_URI']));
|
||||
$url = remove_query_arg('envo_extra_action_notice', $url);
|
||||
}
|
||||
wp_redirect($url);
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
add_action('admin_init', 'envo_extra_admin_dismiss_actions');
|
||||
|
||||
add_action('envo_extra_recommended_title', 'envo_extra_recommended_title_construct');
|
||||
|
||||
function envo_extra_recommended_title_construct() {
|
||||
// Check for current viewing tab
|
||||
$tab = null;
|
||||
if (isset($_GET['tab'])) {
|
||||
$tab = sanitize_text_field(wp_unslash($_GET['tab']));
|
||||
} else {
|
||||
$tab = null;
|
||||
}
|
||||
$actions_r = envo_extra_get_actions_required();
|
||||
$number_action = absint($actions_r['number_notice']);
|
||||
$actions = $actions_r['actions'];
|
||||
?>
|
||||
<a href="?page=et_enwoo&tab=actions_required" class="nav-tab<?php echo $tab == 'actions_required' ? ' nav-tab-active' : null; ?>"><?php
|
||||
esc_html_e('Recommended Actions', 'envo-extra');
|
||||
echo ( $number_action > 0 ) ? '<span class="theme-action-count">' . absint($number_action) . '</span>' : '';
|
||||
?>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
|
||||
add_action('envo_extra_import_title', 'envo_extra_recommended_import_construct');
|
||||
|
||||
function envo_extra_recommended_import_construct() {
|
||||
// Check for current viewing tab
|
||||
$tab = null;
|
||||
if (isset($_GET['tab'])) {
|
||||
$tab = sanitize_text_field(wp_unslash($_GET['tab']));
|
||||
} else {
|
||||
$tab = null;
|
||||
}
|
||||
?>
|
||||
<a href="themes.php?page=envothemes-panel-install-demos" class="nav-tab<?php echo $tab == 'import_data' ? ' nav-tab-active' : null; ?>"><?php esc_html_e('One Click Demo Import', 'envo-extra') ?></a>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
function envo_extra_theme_info_page() {
|
||||
|
||||
$theme_data = wp_get_theme();
|
||||
|
||||
if (isset($_GET['envo_extra_action_dismiss'])) {
|
||||
$actions_dismiss = get_option('envo_extra_actions_dismiss');
|
||||
if (!is_array($actions_dismiss)) {
|
||||
$actions_dismiss = array();
|
||||
}
|
||||
$actions_dismiss[sanitize_text_field(wp_unslash($_GET['envo_extra_action_dismiss']))] = 'dismiss';
|
||||
update_option('envo_extra_actions_dismiss', $actions_dismiss);
|
||||
}
|
||||
|
||||
// Check for current viewing tab
|
||||
$tab = null;
|
||||
if (isset($_GET['tab'])) {
|
||||
$tab = sanitize_text_field(wp_unslash($_GET['tab']));
|
||||
} else {
|
||||
$tab = null;
|
||||
}
|
||||
|
||||
$actions_r = envo_extra_get_actions_required();
|
||||
$number_action = $actions_r['number_notice'];
|
||||
$actions = $actions_r['actions'];
|
||||
|
||||
$current_action_link = esc_url(admin_url('themes.php?page=et_enwoo&tab=actions_required'));
|
||||
|
||||
$recommend_plugins = get_theme_support('recommend-plugins');
|
||||
if (is_array($recommend_plugins) && isset($recommend_plugins[0])) {
|
||||
$recommend_plugins = $recommend_plugins[0];
|
||||
} else {
|
||||
$recommend_plugins[] = array();
|
||||
}
|
||||
?>
|
||||
<div class="wrap about-wrap theme_info_wrapper">
|
||||
<h1>
|
||||
<?php
|
||||
/* translators: %1$s theme name, %2$s theme version */
|
||||
printf(esc_html__('Welcome to %1$s - Version %2$s', 'envo-extra'), esc_html($theme_data->Name), esc_html($theme_data->Version));
|
||||
?>
|
||||
</h1>
|
||||
<div class="about-text"><?php echo esc_html($theme_data->Description); ?></div>
|
||||
<h2 class="nav-tab-wrapper">
|
||||
<a href="?page=et_enwoo" class="nav-tab<?php echo is_null($tab) ? ' nav-tab-active' : null; ?>"><?php echo esc_html($theme_data->Name); ?></a>
|
||||
<?php do_action('envo_extra_recommended_title'); ?>
|
||||
<?php do_action('envo_extra_import_title'); ?>
|
||||
|
||||
<?php do_action('envo_extra_admin_more_tabs'); ?>
|
||||
</h2>
|
||||
|
||||
<?php if (is_null($tab)) { ?>
|
||||
<div class="theme_info info-tab-content">
|
||||
<div class="theme_info_column clearfix">
|
||||
<div class="theme_info_left">
|
||||
<div class="theme_link">
|
||||
<h3><?php esc_html_e('Theme Customizer', 'envo-extra'); ?></h3>
|
||||
<p class="about">
|
||||
<?php
|
||||
/* translators: %s theme name */
|
||||
printf(esc_html__('%s supports the Theme Customizer for all theme settings. Click "Customize" to personalize your site.', 'envo-extra'), esc_html($theme_data->Name));
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<a href="<?php echo esc_url(admin_url('customize.php')); ?>" class="button button-primary"><?php esc_html_e('Start customizing', 'envo-extra'); ?></a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="theme_link">
|
||||
<h3><?php esc_html_e('Theme documentation', 'envo-extra'); ?></h3>
|
||||
<p class="about">
|
||||
<?php
|
||||
/* translators: %s theme name */
|
||||
printf(esc_html__('Need help in setting up and configuring %s? Please take a look at our documentation page.', 'envo-extra'), esc_html($theme_data->Name));
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<a href="<?php echo esc_url('https://envothemes.com/docs/docs/enwoo/'); ?>" target="_blank" class="button button-secondary">
|
||||
<?php
|
||||
/* translators: %s theme name */
|
||||
printf(esc_html__('%s Documentation', 'envo-extra'), esc_html($theme_data->Name));
|
||||
?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="theme_link">
|
||||
<h3><?php esc_html_e('Having trouble? Need support?', 'envo-extra'); ?></h3>
|
||||
<p>
|
||||
<a href="<?php echo esc_url('https://envothemes.com/contact/'); ?>" target="_blank" class="button button-secondary"><?php esc_html_e('Contact us', 'envo-extra'); ?></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="theme_info_right">
|
||||
<img src="<?php echo esc_url(get_stylesheet_directory_uri()); ?>/screenshot.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($tab == 'actions_required') { ?>
|
||||
<div class="action-required-tab info-tab-content">
|
||||
<?php if ($actions_r['number_active'] > 0) { ?>
|
||||
<?php $actions = wp_parse_args($actions, array('page_on_front' => '', 'page_template')) ?>
|
||||
|
||||
<?php if ($actions['recommend_plugins'] == 'active') { ?>
|
||||
<div id="plugin-filter" class="recommend-plugins action-required">
|
||||
<a title="" class="dismiss" href="<?php echo esc_url(add_query_arg(array('envo_extra_action_notice' => 'recommend_plugins'), $current_action_link)); ?>">
|
||||
<?php if ($actions_r['hide_by_click']['recommend_plugins'] == 'hide') { ?>
|
||||
<span class="dashicons dashicons-hidden"></span>
|
||||
<?php } else { ?>
|
||||
<span class="dashicons dashicons-visibility"></span>
|
||||
<?php } ?>
|
||||
</a>
|
||||
<h3><?php esc_html_e('Recommended plugins', 'envo-extra'); ?></h3>
|
||||
<?php
|
||||
envo_extra_render_recommend_plugins($recommend_plugins);
|
||||
?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php do_action('envo_extra_more_required_details', $actions); ?>
|
||||
<?php } else { ?>
|
||||
<p>
|
||||
<?php esc_html_e('Hooray! There are no required actions for you right now.', 'envo-extra'); ?>
|
||||
</p>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($tab == 'import_data') { ?>
|
||||
<div class="import-data-tab info-tab-content">
|
||||
<a href="<?php echo esc_url(admin_url('themes.php?page=envothemes-panel-install-demos')) ?>" class="button" style="text-decoration: none;">
|
||||
<?php esc_html_e('Import demo data', 'envo-extra'); ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
</div> <!-- END .theme_info -->
|
||||
<?php
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
// Meta-Box
|
||||
// How to use: $meta_value = get_post_meta( $post_id, $field_id, true );
|
||||
|
||||
class EnwooOptionsMetabox {
|
||||
|
||||
private $screens = array( 'post', 'page' );
|
||||
private $fields = array(
|
||||
array(
|
||||
'label' => 'Hide Title',
|
||||
'id' => 'envo_extra_hide_title',
|
||||
'type' => 'checkbox',
|
||||
),
|
||||
array(
|
||||
'label' => 'Hide Sidebar',
|
||||
'id' => 'envo_extra_hide_sidebar',
|
||||
'type' => 'checkbox',
|
||||
),
|
||||
array(
|
||||
'label' => 'Transparent Header',
|
||||
'id' => 'envo_extra_transparent_header',
|
||||
'type' => 'checkbox',
|
||||
),
|
||||
array(
|
||||
'label' => 'Transparent Header Text Color',
|
||||
'id' => 'envo_extra_header_text_color',
|
||||
'type' => 'color',
|
||||
'default' => '#000',
|
||||
),
|
||||
);
|
||||
|
||||
public function __construct() {
|
||||
add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
|
||||
add_action( 'save_post', array( $this, 'save_fields' ) );
|
||||
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
||||
}
|
||||
|
||||
public function admin_head() {
|
||||
global $typenow;
|
||||
if ( in_array( $typenow, $this->screens ) ) {
|
||||
?><script>
|
||||
jQuery.noConflict();
|
||||
(function($) {
|
||||
$(document).ready(function () {
|
||||
if (document.getElementById('envo_extra_transparent_header').checked) {
|
||||
$("#envo_extra_header_text_color").closest("tr").show()
|
||||
} else {
|
||||
$("#envo_extra_header_text_color").closest("tr").hide()
|
||||
}
|
||||
$('#envo_extra_transparent_header').on('change', function (e) {
|
||||
if (e.currentTarget.checked) {
|
||||
$("#envo_extra_header_text_color").closest("tr").show()
|
||||
} else {
|
||||
$("#envo_extra_header_text_color").closest("tr").hide()
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
(jQuery);
|
||||
</script><?php
|
||||
?><?php
|
||||
}
|
||||
}
|
||||
|
||||
public function add_meta_boxes() {
|
||||
foreach ( $this->screens as $s ) {
|
||||
add_meta_box(
|
||||
'EnwooOptions', esc_html__( 'Enwoo Options', 'envo-extra' ), array( $this, 'meta_box_callback' ), $s, 'side', 'high'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function meta_box_callback( $post ) {
|
||||
wp_nonce_field( 'EnwooOptions_data', 'EnwooOptions_nonce' );
|
||||
esc_html_e( 'Custom page options', 'envo-extra' );
|
||||
$this->field_generator( $post );
|
||||
}
|
||||
|
||||
public function field_generator( $post ) {
|
||||
$output = '';
|
||||
$allowed_html = array(
|
||||
'input' => array(
|
||||
'id' => array(),
|
||||
'name' => array(),
|
||||
'type' => array(),
|
||||
'value' => array(),
|
||||
'checked' => array(),
|
||||
'onclick' => array(),
|
||||
),
|
||||
'label' => array(
|
||||
'for' => array(),
|
||||
),
|
||||
'strong' => array(),
|
||||
'tr' => array(),
|
||||
'td' => array(),
|
||||
);
|
||||
foreach ( $this->fields as $field ) {
|
||||
$label = '<label for="' . esc_attr($field[ 'id' ]) . '">' . esc_html($field[ 'label' ]) . '</label>';
|
||||
$meta_value = get_post_meta( $post->ID, $field[ 'id' ], true );
|
||||
if ( empty( $meta_value ) ) {
|
||||
if ( isset( $field[ 'default' ] ) ) {
|
||||
$meta_value = $field[ 'default' ];
|
||||
}
|
||||
}
|
||||
switch ( $field[ 'type' ] ) {
|
||||
case 'checkbox':
|
||||
$input = sprintf(
|
||||
'<input %1$s id="%2$s" name="%3$s" type="checkbox" value="on">', $meta_value === 'on' ? 'checked' : '', esc_attr($field[ 'id' ]), esc_attr($field[ 'id' ])
|
||||
);
|
||||
break;
|
||||
default:
|
||||
$input = sprintf(
|
||||
'<input %1$s id="%2$s" name="%3$s" type="%4$s" value="%5$s">', $field[ 'type' ] !== 'color' ? 'style="width: 100%"' : '', esc_attr($field[ 'id' ]), esc_attr($field[ 'id' ]), esc_attr($field[ 'type' ]), esc_attr($meta_value)
|
||||
);
|
||||
}
|
||||
$output .= $this->format_rows( $label, $input );
|
||||
}
|
||||
echo '<table class="form-table"><tbody>' . wp_kses($output, $allowed_html) . '</tbody></table>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
}
|
||||
|
||||
public function format_rows( $label, $input ) {
|
||||
return '<tr><td><strong>' . $label . '</strong></td><td>' . $input . '</td><tr>';
|
||||
}
|
||||
|
||||
public function save_fields( $post_id ) {
|
||||
if ( !isset( $_POST[ 'EnwooOptions_nonce' ] ) ) {
|
||||
return $post_id;
|
||||
}
|
||||
$nonce = ( isset( $_POST[ 'EnwooOptions_nonce' ] ) ? sanitize_text_field( wp_unslash( $_POST[ 'EnwooOptions_nonce' ] ) ) : '' );
|
||||
if ( !wp_verify_nonce( $nonce, 'EnwooOptions_data' ) ) {
|
||||
return $post_id;
|
||||
}
|
||||
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
||||
return $post_id;
|
||||
}
|
||||
foreach ( $this->fields as $field ) {
|
||||
switch ( $field['type'] ) {
|
||||
case 'checkbox':
|
||||
update_post_meta( $post_id, $field['id'], isset( $_POST[ $field['id'] ] ) ? sanitize_text_field( wp_unslash( $_POST[ $field['id'] ])) : '' );
|
||||
break;
|
||||
default:
|
||||
if ( isset( $_POST[ $field['id'] ] ) ) {
|
||||
$sanitized = sanitize_text_field( wp_unslash($_POST[ $field['id'] ]) );
|
||||
update_post_meta( $post_id, $field['id'], $sanitized );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ( class_exists( 'EnwooOptionsMetabox' ) ) {
|
||||
new EnwooOptionsMetabox;
|
||||
};
|
||||
Reference in New Issue
Block a user