This commit is contained in:
2026-03-11 15:57:27 +01:00
parent 481271c972
commit b4b460fd21
10775 changed files with 2071579 additions and 26409 deletions

View File

@@ -0,0 +1,237 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
use GRIM_SG\Cache;
use GRIM_SG\GoogleNews;
use GRIM_SG\ImageSitemap;
use GRIM_SG\VideoSitemap;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<div class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_cache',
'value' => $settings->enable_cache ?? false,
'label' => esc_html__( 'Cache', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'sitemap-cache' ),
)
);
?>
</strong>
</div>
<div class="inside">
<p class="grim-section-desc grim-mb-20">
<?php esc_html_e( 'All below options will be available after enabling Sitemap Cache. Sitemaps Content will be cached for faster loading.', 'xml-sitemap-generator-for-google' ); ?>
</p>
<p class="cache-timeout-group grim-mb-20">
<?php
$cache_timeout_period = $settings->cache_timeout_period ?? 3600;
$args = array(
'label' => __( 'Cache Expiration Time:', 'xml-sitemap-generator-for-google' ),
'name' => 'cache_timeout_period',
'value' => (string) $cache_timeout_period,
'options' => array(
'60' => __( 'minute(s)', 'xml-sitemap-generator-for-google' ),
'3600' => __( 'hour(s)', 'xml-sitemap-generator-for-google' ),
'86400' => __( 'day(s)', 'xml-sitemap-generator-for-google' ),
),
'select_size' => 'grim-select-small',
);
?>
<div class="grim-select-label sitemap-cache" data-search-id="<?php echo esc_attr( $args['name'] ); ?>">
<?php echo esc_html( $args['label'] ); ?>
</div>
<div class="grim-cache-time grim-mb-20">
<input type="number" id="cache_timeout" name="cache_timeout" class="grim-input sitemap-cache" value="<?php echo esc_attr( $settings->cache_timeout ?? 24 ); ?>"/>
<div class="grim-select <?php echo esc_attr( $args['select_size'] ?? 'grim-select-default' ); ?> sitemap-cache" data-name="<?php echo esc_attr( $args['name'] ); ?>">
<div class="grim-select__trigger">
<span>
<?php echo esc_html( $args['options'][ $args['value'] ] ?? __( 'None', 'xml-sitemap-generator-for-google' ) ); ?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<?php foreach ( $args['options'] as $value => $label ) { ?>
<div class="grim-option <?php echo $args['options'][ $args['value'] ] === $label ? 'selected' : ''; ?>" data-value="<?php echo esc_attr( $value ); ?>">
<?php echo esc_html( $label ); ?>
</div>
<?php } ?>
</div>
</div>
<select id="<?php echo esc_attr( $args['name'] ); ?>" name="<?php echo esc_attr( $args['name'] ); ?>" class="grim-hidden-select" hidden>
<?php foreach ( $args['options'] as $value => $label ) { ?>
<option value="<?php echo esc_attr( $value ); ?>" <?php selected( $value, $args['value'] ); ?>>
<?php echo esc_html( $label ); ?>
</option>
<?php } ?>
</select>
</div>
</p>
<div class="sitemap-cache">
<table class="grim-table grim-table-small-row wp-list-table widefat fixed striped" role="presentation">
<thead>
<tr>
<th><span data-search-id="last_cached_time"><?php esc_html_e( 'Last Cached Time:', 'xml-sitemap-generator-for-google' ); ?></span></th>
</tr>
</thead>
<tbody>
<?php if ( $settings->enable_sitemap ) { ?>
<tr>
<td>
<span><?php esc_html_e( 'XML Sitemap', 'xml-sitemap-generator-for-google' ); ?></span>:
</td>
<td class="grim-td-center"><i><?php echo esc_html( Cache::get_time_formatted( 'sitemap' ) ); ?></i></td>
<td>
<a href="<?php echo esc_url( sgg_get_sitemap_url( $settings->sitemap_url, 'sitemap_xml' ) ); ?>" target="_blank" class="grim-button white">
<span><?php esc_html_e( 'View', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
</td>
</tr>
<?php } ?>
<?php if ( sgg_pro_enabled() && $settings->enable_html_sitemap ) { ?>
<tr>
<td>
<span><?php esc_html_e( 'HTML Sitemap', 'xml-sitemap-generator-for-google' ); ?></span>:
</td>
<td class="grim-td-center"><i><?php echo esc_html( Cache::get_time_formatted( 'sitemap' ) ); ?></i></td>
<td>
<a href="<?php echo esc_url( sgg_get_sitemap_url( $settings->html_sitemap_url, 'sitemap_html' ) ); ?>" target="_blank" class="grim-button white">
<span><?php esc_html_e( 'View', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
</td>
</tr>
<?php } ?>
<?php if ( $settings->enable_google_news ) { ?>
<tr>
<td>
<span><?php esc_html_e( 'Google News', 'xml-sitemap-generator-for-google' ); ?></span>:
</td>
<td class="grim-td-center"><i><?php echo esc_html( Cache::get_time_formatted( GoogleNews::$template ) ); ?></i></td>
<td>
<a href="<?php echo esc_url( sgg_get_sitemap_url( $settings->google_news_url, 'google_news' ) ); ?>" target="_blank" class="grim-button white">
<span><?php esc_html_e( 'View', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
</td>
</tr>
<?php } ?>
<?php if ( $settings->enable_image_sitemap ) { ?>
<tr>
<td>
<span><?php esc_html_e( 'Image Sitemap', 'xml-sitemap-generator-for-google' ); ?></span>:
</td>
<td class="grim-td-center"><i><?php echo esc_html( Cache::get_time_formatted( ImageSitemap::$template ) ); ?></i></td>
<td>
<a href="<?php echo esc_url( sgg_get_sitemap_url( $settings->image_sitemap_url, 'image_sitemap' ) ); ?>" target="_blank" class="grim-button white">
<span><?php esc_html_e( 'View', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
</td>
</tr>
<?php } ?>
<?php if ( $settings->enable_video_sitemap ) { ?>
<tr>
<td>
<span><?php esc_html_e( 'Video Sitemap', 'xml-sitemap-generator-for-google' ); ?></span>:
</td>
<td class="grim-td-center"><i><?php echo esc_html( Cache::get_time_formatted( VideoSitemap::$template ) ); ?></i></td>
<td>
<a href="<?php echo esc_url( sgg_get_sitemap_url( $settings->video_sitemap_url, 'video_sitemap' ) ); ?>" target="_blank" class="grim-button white">
<span><?php esc_html_e( 'View', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<div class="grim-notice grim-mb-20">
<i class="grim-icon-information"></i>
<p>
<?php
echo sprintf(
esc_html__( 'Note: %s', 'xml-sitemap-generator-for-google' ),
'<span>' . esc_html__( 'Sitemap Cache will only be created when someone opens/visits the Sitemap on front-end.', 'xml-sitemap-generator-for-google' ) . '</span>'
)
?>
</p>
</div>
</div>
<p class="sitemap-cache grim-button-section" data-search-id="clear_cache">
<input type="hidden" name="clear_cache" value="">
<button type="submit" id="clear-sitemap-cache" class="grim-button white sitemap-cache">
<span>
<i class="grim-icon-trash"></i>
<?php esc_html_e( 'Clear Cache', 'xml-sitemap-generator-for-google' ); ?>
</span>
</button>
</p>
</div>
</div>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-toggle-section pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'clear_cache_on_save_post',
'class' => 'sitemap-cache',
'value' => $settings->clear_cache_on_save_post ?? false,
'label' => esc_html__( 'Smart Caching', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<p class="grim-section-desc inside sitemap-cache"><?php esc_html_e( 'Clear cache when Page/Post created or updated', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<div class="grim-section">
<div class="grim-toggle-section pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'disable_media_sitemap_cache',
'value' => $settings->disable_media_sitemap_cache ?? false,
'label' => esc_html__( 'Disable Media Sitemap Cache Collection', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<p class="inside grim-section-desc">
<?php esc_html_e( 'If you are having issues with Image and Video Sitemaps, you can try to disable Media Sitemap Cache Collection.', 'xml-sitemap-generator-for-google' ); ?>
<br>
</p>
<div class="grim-notice">
<i class="grim-icon-information"></i>
<p>
<?php
echo sprintf(
esc_html__( 'Note: %s', 'xml-sitemap-generator-for-google' ),
'<span>' . esc_html__( 'This will affect the performance of Media Sitemap Generation.', 'xml-sitemap-generator-for-google' ) . '</span>'
)
?>
</p>
</div>
</div>
</div>

View File

@@ -0,0 +1,87 @@
<?php
use GRIM_SG\Dashboard;
/**
* @var $args
*/
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_cronjob',
'value' => $settings->enable_cronjob ?? false,
'label' => esc_html__( 'Cron Job', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'cronjob' ),
)
);
?>
</strong>
</div>
<div class="inside">
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc grim-mb-20">
<?php esc_html_e( 'Cron Job is a feature that allows you to schedule the generation of sitemaps at specific times.', 'xml-sitemap-generator-for-google' ); ?>
</p>
<p class="cronjob-runtime-group">
<?php
$schedules = wp_get_schedules();
$cronjob_options = array();
foreach ( $schedules as $key => $schedule ) {
$cronjob_options[ $key ] = $schedule['display'];
}
Dashboard::render(
'fields/select.php',
array(
'name' => 'cronjob_runtime',
'label' => esc_html__( 'Cron Job Run Time:', 'xml-sitemap-generator-for-google' ),
'value' => $settings->cronjob_runtime ?? 'daily',
'options' => $cronjob_options,
'class' => 'cronjob',
'select_size' => 'grim-select-long',
)
);
?>
</p>
<p class="cronjob grim-mt-20">
<?php
$next_run = wp_next_scheduled( 'xml_sitemap_cronjob' );
if ( $next_run ) {
printf(
'%s <strong>%s</strong>',
esc_html__( 'Cron Job Next Run:', 'xml-sitemap-generator-for-google' ),
esc_html( gmdate( 'Y-m-d H:i:s', $next_run ) )
);
}
?>
</p>
<div class="grim-notice cronjob">
<i class="grim-icon-information"></i>
<p>
<span>
<?php esc_html_e( 'Cron Job will run at the time you selected and will be triggered by WordPress Cron. It will clear all caches and re-generate Sitemaps.', 'xml-sitemap-generator-for-google' ); ?>
<br>
<?php esc_html_e( 'You can move the cron job to the system task scheduler by following the instructions', 'xml-sitemap-generator-for-google' ); ?> -
<a href="https://developer.wordpress.org/plugins/cron/hooking-wp-cron-into-the-system-task-scheduler/" target="_blank"><?php esc_html_e( 'Hooking WP Cron into the System Task Scheduler', 'xml-sitemap-generator-for-google' ); ?></a>.
</span>
</p>
</div>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,56 @@
<?php
/**
* @var $args
*/
?>
<div class="grim-section">
<h3 class="grim-section-title" data-search-id="advanced_import_settings"><?php esc_html_e( 'Import Settings', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<div class="grim-notice grim-notice-error grim-mb-20">
<i class="grim-icon-information"></i>
<p>
<?php
echo sprintf(
esc_html__( 'WARNING: %s', 'xml-sitemap-generator-for-google' ),
'<span>' . esc_html__( 'This will overwrite all existing Settings, please proceed with caution or backup current Settings!', 'xml-sitemap-generator-for-google' ) . '</span>'
)
?>
</p>
</div>
<div class="grim-file-upload-wrapper">
<div class="grim-import-label"><?php esc_html_e( 'Choose File', 'xml-sitemap-generator-for-google' ); ?></div>
<div class="grim-import-file grim-button-section">
<div class="grim-file-upload">
<label class="grim-upload-btn" for="grim-import-file">
<span class="grim-file-name" id="grim-file-name"><?php esc_html_e( 'No file chosen', 'xml-sitemap-generator-for-google' ); ?></span>
<input type="file" id="grim-import-file" name="import_file" accept=".json">
<input type="hidden" name="import_settings" value="">
</label>
</div>
<button type="submit" id="import-settings" class="grim-button white">
<span>
<i class="grim-icon-upload"></i>
<?php esc_html_e( 'Import Settings', 'xml-sitemap-generator-for-google' ); ?>
</span>
</button>
</div>
<p><?php esc_html_e( 'Select the JSON file in order to Import Settings.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>
</div>
<div class="grim-section grim-button-section">
<h3 class="grim-section-title" data-search-id="advanced_export_settings"><?php esc_html_e( 'Export Settings', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'Here you can download your current Settings. Keep this safe as you can use it as a backup if anything goes wrong.', 'xml-sitemap-generator-for-google' ); ?></p>
<p>
<a href="<?php echo esc_url( admin_url( 'admin-ajax.php?action=export_sitemap_settings&nonce=' . wp_create_nonce( 'sgg_export_settings' ) ) ); ?>" class="grim-button white">
<span>
<i class="grim-icon-download"></i>
<?php esc_html_e( 'Download Settings Data File', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
</p>
</div>
</div>

View File

@@ -0,0 +1,30 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<p class="grim-toggle-section">
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'minimize_sitemap',
'value' => $settings->minimize_sitemap ?? false,
'label' => esc_html__( 'Minimize Sitemap source code', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<div class="inside">
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc"><?php esc_html_e( 'Sitemap source code will be compressed into a single line.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,87 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
$color_fields = array(
'header_background_color' => array(
'label' => __( 'Header Background Color:', 'xml-sitemap-generator-for-google' ),
'default' => '#82a745',
),
'header_text_color' => array(
'label' => __( 'Header Text Color:', 'xml-sitemap-generator-for-google' ),
'default' => '#ffffff',
),
'sitemap_background_color' => array(
'label' => __( 'Sitemap Background Color:', 'xml-sitemap-generator-for-google' ),
'default' => '#ecf4db',
),
'sitemap_text_color' => array(
'label' => __( 'Sitemap Text Color:', 'xml-sitemap-generator-for-google' ),
'default' => '#444444',
),
'sitemap_link_color' => array(
'label' => __( 'Sitemap Link Color:', 'xml-sitemap-generator-for-google' ),
'default' => '#0073aa',
),
'footer_text_color' => array(
'label' => __( 'Footer Text Color:', 'xml-sitemap-generator-for-google' ),
'default' => '#666666',
),
);
?>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title" data-search-id="advanced_sitemap_styles"><?php esc_html_e( 'Sitemap Styles', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="inside">
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?> colors-section">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'Customize colors of your Sitemap.', 'xml-sitemap-generator-for-google' ); ?></p>
<table class="grim-table grim-mb-20 wp-list-table widefat fixed striped">
<tbody>
<?php foreach ( $color_fields as $name => $field ) : ?>
<tr>
<td><?php echo esc_html( $field['label'] ); ?></td>
<td>
<?php
Dashboard::render(
'fields/color.php',
array(
'name' => "colors[$name]",
'value' => $settings->colors[$name] ?? $field['default'],
)
);
?>
<span><?php echo esc_html( $settings->colors[$name] ) ?? esc_html( $field['default'] ); ?></span>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<br>
<div class="grim-toggle-section">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'hide_branding',
'label' => __( 'Hide Branding Marks', 'xml-sitemap-generator-for-google' ),
'value' => $settings->hide_branding ?? true,
)
);
?>
</p>
<p class="grim-section-desc grim-mt-10">
<?php esc_html_e( 'Hides all plugin author and name references from generated XML Sitemaps.', 'xml-sitemap-generator-for-google' ); ?>
</p>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,56 @@
<?php
use GRIM_SG\Dashboard;
/**
* @var $args
*/
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-webserver">
<h3 class="grim-section-title" data-search-id="advanced_wp_cli"><?php esc_html_e( 'WP CLI', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20">
<?php esc_html_e( 'WP CLI is a feature that allows you to generate sitemaps using the command line. You can use the following command to generate sitemaps:', 'xml-sitemap-generator-for-google' ); ?>
</p>
<div class="grim-wp-cli grim-mb-20">
<code>
<p id="wp-cli">
$ wp sitemap generate --template=sitemap
<br>
$ wp sitemap generate --template=image-sitemap
<br>
$ wp sitemap generate --template=video-sitemap
<br>
$ wp sitemap generate --template=google-news
</p>
<div class="grim-code-copied">
<span class="grim-btn-copied" data-target="wp-cli">
<i class="grim-icon-copy"></i>
<span class="grim-tooltip"><?php esc_html_e( 'Copied!', 'xml-sitemap-generator-for-google' ); ?></span>
</span>
</div>
</code>
<p>
<?php esc_html_e( 'You can find more information about WP CLI in', 'xml-sitemap-generator-for-google' ); ?>
<a href="https://wp-cli.org/" target="_blank">https://wp-cli.org/</a>.
</p>
</div>
<div class="grim-wp-cli-code">
<p class="grim-section-desc grim-mb-10">
<?php esc_html_e( 'Also, you can set Cron Job to generate sitemaps automatically using WP CLI command. Here is an example for daily cron job:', 'xml-sitemap-generator-for-google' ); ?>
</p>
<code>
<p id="sitemap-generate">
0 0 * * * /usr/local/bin/wp sitemap generate --template=image-sitemap --path=/var/www/html --quiet
</p>
<div class="grim-code-copied">
<span class="grim-btn-copied" data-target="sitemap-generate">
<i class="grim-icon-copy"></i>
<span class="grim-tooltip"><?php esc_html_e( 'Copied!', 'xml-sitemap-generator-for-google' ); ?></span>
</span>
</div>
</code>
</div>
</div>
</div>