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>

View File

@@ -0,0 +1,94 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
use GRIM_SG\PTSettings;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<h3 class="grim-section-title" data-search-id="additional_urls"><?php esc_html_e( 'Additional URLs', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20 line-height-2">
<?php esc_html_e( 'External URLs which should be included in your Sitemap:', 'xml-sitemap-generator-for-google' ); ?>
<br>
<strong><?php esc_html_e( 'URL to External Page:', 'xml-sitemap-generator-for-google' ); ?></strong>
<?php esc_html_e( 'Enter the URL to the External Page. For example: https://example.com/blog or www.example.com/account.', 'xml-sitemap-generator-for-google' ); ?>
<br>
<strong><?php esc_html_e( 'Last Modified:', 'xml-sitemap-generator-for-google' ); ?></strong>
<i><?php esc_html_e( '(Optional)', 'xml-sitemap-generator-for-google' ); ?></i>
<?php esc_html_e( 'You can select the Last Modified datetime for the URL or leave it empty (default) to always show the Current Datetime on Sitemap.', 'xml-sitemap-generator-for-google' ); ?>
</p>
<table class="grim-table grim-mb-20 wp-list-table widefat striped additional_urls grim-additional-urls" cellpadding="3" cellspacing="3">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'URL to External Page', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Priority', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Update Frequency', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Last Modified', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody id="additional_urls">
<?php if ( count( $settings->additional_pages ) === 0 ) { ?>
<tr class="no_urls">
<td colspan="5" align="center"><?php esc_html_e( 'No URLs added yet!', 'xml-sitemap-generator-for-google' ); ?></td>
</tr>
<?php
} else {
foreach ( $settings->additional_pages as $additional_page ) {
?>
<tr>
<td><input type="text" name="additional_urls[]" class="grim-input" value="<?php echo esc_attr( $additional_page['url'] ); ?>"></td>
<td><?php Dashboard::render_priority_field( 'additional_priorities[]', $additional_page['priority'] ); ?></td>
<td><?php Dashboard::render_frequency_field( 'additional_frequencies[]', $additional_page['frequency'] ); ?></td>
<td><input type="datetime-local" name="additional_lastmods[]" class="grim-input" value="<?php echo esc_attr( $additional_page['lastmod'] ?? '' ); ?>"></td>
<td><a href="#" class="remove_url"><i class="grim-icon-trash"></i></a></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
<div class="general-settings-actions">
<a href="#" id="add_new_url" class="grim-button white">
<span>
<i class="grim-icon-plus"></i>
<?php esc_html_e( 'Add New URL', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
<a href="#" id="add_bulk_urls" class="grim-button white">
<span>
<i class="grim-icon-plus"></i>
<?php esc_html_e( 'Add Bulk URLs', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
<a href="#" class="grim-button grim-mt-10 secondary grim-additional-urls-toggle">
<span>Show More</span>
</a>
</div>
<div class="add-bulk-urls-section hidden">
<label for="bulk_urls"><?php esc_html_e( 'Enter URLs separated by line:', 'xml-sitemap-generator-for-google' ); ?></label>
<textarea id="bulk_urls" name="bulk_urls" rows="5" cols="70"></textarea>
<div class="general-settings-actions">
<a href="#" id="cancel_add_bulk_urls" class="grim-button white">
<span><?php esc_html_e( 'Cancel', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
<a href="#" id="run_add_bulk_urls" class="grim-button secondary">
<span><?php esc_html_e( 'Add', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
</div>
</div>
</div>
</div>
<div class="hidden-area">
<div id="additional_priorities_selector">
<?php Dashboard::render_priority_field( 'additional_priorities[]', 3 ); ?>
</div>
<div id="additional_frequencies_selector">
<?php Dashboard::render_frequency_field( 'additional_frequencies[]', PTSettings::$WEEKLY ); ?>
</div>
</div>

View File

@@ -0,0 +1,61 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
use GRIM_SG\PTSettings;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<h3 class="grim-section-title sitemap-index-depended" data-search-id="custom_sitemaps"><?php esc_html_e( 'Custom Sitemaps', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20 sitemap-index-depended line-height-2">
<?php esc_html_e( 'Here you can add Custom XML Sitemaps URLs (ex: Static Sitemaps, XML Sitmaps created by other services, etc.) to your ', 'xml-sitemap-generator-for-google' ); ?>
<b><?php esc_html_e( 'Sitemap Index', 'xml-sitemap-generator-for-google' ); ?></b>.
<br>
<strong><?php esc_html_e( 'Custom XML Sitemap URL:', 'xml-sitemap-generator-for-google' ); ?></strong>
<?php esc_html_e( 'Enter XML Sitemap URL to your Sitemap Index. For example: https://example.com/static-sitemap.xml', 'xml-sitemap-generator-for-google' ); ?>
<br>
<strong><?php esc_html_e( 'Last Modified:', 'xml-sitemap-generator-for-google' ); ?></strong>
<i><?php esc_html_e( '(Optional)', 'xml-sitemap-generator-for-google' ); ?></i>
<?php esc_html_e( 'You can select the Last Modified datetime for the Custom Sitemap or leave it empty (default) to always show the Current Datetime on Sitemap.', 'xml-sitemap-generator-for-google' ); ?>
</p>
<table class="grim-table grim-mb-20 wp-list-table widefat striped additional_urls sitemap-index-depended" cellpadding="3" cellspacing="3">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Custom XML Sitemap URL', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Last Modified', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody id="custom_sitemaps">
<?php if ( count( $settings->custom_sitemaps ) === 0 ) { ?>
<tr class="no_urls">
<td colspan="5" align="center"><?php esc_html_e( 'No Custom Sitemaps added!', 'xml-sitemap-generator-for-google' ); ?></td>
</tr>
<?php
} else {
foreach ( $settings->custom_sitemaps as $custom_sitemap ) {
?>
<tr>
<td><input class="grim-input" type="text" name="custom_sitemap_urls[]" value="<?php echo esc_attr( $custom_sitemap['url'] ); ?>"></td>
<td><input class="grim-input" type="datetime-local" name="custom_sitemap_lastmods[]" value="<?php echo esc_attr( $custom_sitemap['lastmod'] ?? '' ); ?>"></td>
<td><a href="#" class="remove_url"><i class="grim-icon-trash"></i></a></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
<div class="general-settings-actions sitemap-index-depended">
<a href="#" id="add_sitemap_url" class="grim-button white">
<span>
<i class="grim-icon-plus"></i>
<?php esc_html_e( 'Add Sitemap URL', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,94 @@
<?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(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title" data-search-id="general_exclude_posts"><?php esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'Please search and choose here Pages, Posts, Custom Posts, Categories and Tags that should be excluded from Sitemap:', 'xml-sitemap-generator-for-google' ); ?></p>
<div class="grim-exclude-tab-nav">
<ul class="grim-exclude-tabs">
<li class="grim-exclude-tab grim-exclude-tab--active" data-tab="pages">
<?php esc_html_e( 'Pages/Posts', 'xml-sitemap-generator-for-google' ); ?>
<span class="grim-term-count">0</span>
</li>
<li class="grim-exclude-tab" data-tab="categories">
<?php esc_html_e( 'Categories and Tags', 'xml-sitemap-generator-for-google' ); ?>
<span class="grim-term-count">0</span>
</li>
</ul>
<div class="grim-exclude-tab-content">
<div id="pages" class="grim-exclude-tab-panel grim-exclude-tab-panel--active">
<?php
Dashboard::render(
'fields/autocomplete.php',
array(
'label' => esc_html__( 'Exclude Pages/Posts:', 'xml-sitemap-generator-for-google' ),
'name' => 'exclude_posts',
'value' => $settings->exclude_posts ?? '',
)
);
?>
</div>
<div id="categories" class="grim-exclude-tab-panel">
<?php
Dashboard::render(
'fields/autocomplete.php',
array(
'type' => 'taxonomy',
'label' => esc_html__( 'Exclude Categories and Tags:', 'xml-sitemap-generator-for-google' ),
'name' => 'exclude_terms',
'value' => $settings->exclude_terms ?? '',
)
);
?>
</div>
</div>
</div>
<?php
sgg_show_pro_overlay();
?>
</div>
</div>
<div class="grim-section grim-include <?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="general_include_only_terms"><?php esc_html_e( 'Include only selected Terms', 'xml-sitemap-generator-for-google' ); ?></h3>
<span class="grim-term-count">0</span>
</div>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'Include only selected Categories, Tags and exclude all others:', 'xml-sitemap-generator-for-google' ); ?></p>
<div class="grim-exclude-tab-nav">
<div class="grim-exclude-tab-content">
<div id="others" class="grim-exclude-tab-panel grim-exclude-tab-panel--active">
<?php
Dashboard::render(
'fields/autocomplete.php',
array(
'type' => 'taxonomy',
'label' => esc_html__( 'Include only selected Categories, Tags and exclude all others:', 'xml-sitemap-generator-for-google' ),
'name' => 'include_only_terms',
'value' => $settings->include_only_terms ?? '',
)
);
?>
</div>
</div>
</div>
<?php
sgg_show_pro_overlay();
?>
</div>
</div>

View File

@@ -0,0 +1,74 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section general-settings">
<h3 class="grim-section-title"><?php esc_html_e( 'General Settings', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'Basic Settings for your Sitemaps. Enabling all below options is recommended.', 'xml-sitemap-generator-for-google' ); ?></p>
<ul>
<li class="grim-mb-20">
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'sitemap_to_robots',
'value' => $settings->sitemap_to_robots,
'label' => esc_html__( 'Add Sitemap Output URLs to site "robots.txt" file', 'xml-sitemap-generator-for-google' ),
'class' => 'grim-section-label',
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_indexnow',
'value' => $settings->enable_indexnow,
'label' => esc_html__( 'Enable IndexNow Protocol (Microsoft Bing, Seznam.cz, Naver, Yandex)', 'xml-sitemap-generator-for-google' ),
'class' => 'grim-section-label has-dependency',
'data' => array( 'target' => 'indexnow' ),
)
);
?>
<div class="grim-ml-45 general-settings-index indexnow indexnow-api-key">
<div class="grim-section-desc grim-mb-15 indexnow"><?php esc_html_e( 'IndexNow Protocol informs search engines like Microsoft Bing, Seznam.cz, Naver, and Yandex about all updates of your website, including changes when saving Posts.', 'xml-sitemap-generator-for-google' ); ?></div>
<?php
$indexnow = ( new \GRIM_SG\IndexNow() );
?>
<span class="general-settings-index-label indexnow"><?php esc_html_e( 'INDEXNOW API KEY:', 'xml-sitemap-generator-for-google' ); ?></span>
<div class="general-settings-index-info grim-mb-15">
<span class="general-settings-index-key" id="grim-api-key"><?php echo esc_html( $indexnow->get_api_key() ); ?></span>
<span class="grim-btn-copied" data-target="grim-api-key">
<i class="grim-icon-copy"></i>
<span class="grim-tooltip"><?php esc_html_e( 'Copied!', 'xml-sitemap-generator-for-google' ); ?></span>
</span>
</div>
<div class="general-settings-actions">
<a href="<?php echo esc_url( $indexnow->get_api_key_location() ); ?>" target="_blank" class="grim-button white button-small indexnow button-icon-left">
<span>
<i class="grim-icon-check"></i>
<?php esc_html_e( 'Check API Key', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
<input type="hidden" name="change_indexnow_key" value="">
<button type="submit" id="change-indexnow-key" class="grim-button white button-small indexnow">
<span>
<i class="grim-icon-edit"></i>
<?php esc_html_e( 'Change API Key', 'xml-sitemap-generator-for-google' ); ?>
</span>
</button>
</div>
</div>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,60 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-preview-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<p class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_html_sitemap',
'value' => $settings->enable_html_sitemap ?? false,
'label' => esc_html__( 'HTML Sitemap', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'html-sitemap-depended' ),
)
);
?>
</strong>
</p>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc"><?php esc_html_e( 'Here you can enable HTML Sitemap, customize Output URL and preview.', 'xml-sitemap-generator-for-google' ); ?></p>
<div class="grim-mt-20">
<?php
Dashboard::render(
'partials/preview-urls.php',
array(
'languages_label' => esc_html__( 'HTML Sitemaps for other languages:', 'xml-sitemap-generator-for-google' ),
'sitemap_url' => $settings->html_sitemap_url,
'sitemap_type' => 'sitemap_html',
'class' => 'html-sitemap-depended',
'input_name' => 'html_sitemap_url',
'input_value' => $settings->html_sitemap_url,
'input_label' => esc_html__( 'HTML Sitemap URL:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'html-sitemap-depended',
'notice_show' => true,
)
);
?>
</div>
<br>
<p class="grim-section-desc line-height-2">
<?php esc_html_e( 'HTML Sitemap can be displayed using Page Builder Widget for Elementor, Gutenberg, WPBakery or Shortcode:', 'xml-sitemap-generator-for-google' ); ?>
<br>
<strong id="grim-shortcode">[html-sitemap post-types="page,post,.." show-featured-image="true" show-date="true" date-format="F j, Y"]</strong>
<span class="grim-btn-copied" data-target="grim-shortcode">
<i class="grim-icon-copy"></i>
<span class="grim-tooltip"><?php esc_html_e( 'Copied!', 'xml-sitemap-generator-for-google' ); ?></span>
</span>
</p>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,68 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-post-priority <?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="posts_priority"><?php esc_html_e( 'Posts Priority', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'Please choose a priority for calculating each of posts:', 'xml-sitemap-generator-for-google' ); ?></p>
<ul class="grim-post-priority-box">
<li>
<?php
Dashboard::render(
'fields/radio.php',
array(
'label' => esc_html__( 'Do not use Priority Calculation', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( 'Posts will have the same priority which is defined in "Sitemap Options"', 'xml-sitemap-generator-for-google' ),
'name' => 'posts_priority',
'id' => 'posts_priority_1',
'value' => '',
'current_value' => $settings->posts_priority ?? '',
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/radio.php',
array(
'label' => esc_html__( 'Comments Count', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( 'Number of Post Comments will be used for Priority Calculation', 'xml-sitemap-generator-for-google' ),
'name' => 'posts_priority',
'id' => 'posts_priority_2',
'value' => 'SGG_PRO/Classes/Priority_Count',
'current_value' => $settings->posts_priority ?? '',
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/radio.php',
array(
'label' => esc_html__( 'Comments Average', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( 'Average Comments Count will be used for Priority Calculation', 'xml-sitemap-generator-for-google' ),
'name' => 'posts_priority',
'id' => 'posts_priority_3',
'value' => 'SGG_PRO/Classes/Priority_Average',
'current_value' => $settings->posts_priority ?? '',
)
);
?>
</li>
</ul>
<?php sgg_show_pro_overlay(); ?>
</div>
</div>

View File

@@ -0,0 +1,79 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<h3 class="grim-section-title" data-search-id="sitemap_options"><?php esc_html_e( 'Sitemap Options', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'This Options will be used for generating your Sitemap.', 'xml-sitemap-generator-for-google' ); ?></p>
<table class="grim-table wp-list-table widefat fixed striped">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Priority', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Update Frequency', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php
Dashboard::render_post_row( 'Home Page', 'home', $settings->home );
Dashboard::render_post_row( 'Pages', 'page', $settings->page );
Dashboard::render_post_row( 'Posts', 'post', $settings->post );
Dashboard::render_post_row( 'Recent Archive', 'archive', $settings->archive );
Dashboard::render_post_row( 'Older Archives', 'archive_older', $settings->archive_older );
Dashboard::render_post_row( 'Author Pages', 'authors', $settings->authors );
Dashboard::render_post_row( 'Media Pages', 'media', $settings->media ?? new stdClass() );
if ( ! empty( $args['taxonomies'] ) ) {
foreach ( $args['taxonomies'] as $taxonomy ) {
Dashboard::render_post_row( $taxonomy->label, $taxonomy->name, $settings->taxonomies[ $taxonomy->name ] );
}
}
?>
</tbody>
</table>
<div class="grim-notice grim-mb-20 grim-mt-20">
<i class="grim-icon-information"></i>
<p>
<?php
$attachment_pages_url = 'https://make.wordpress.org/core/2023/10/16/changes-to-attachment-pages/';
echo sprintf(
/* translators: %s: Note about enabling attachment pages with link */
esc_html__( 'Media Pages: %s', 'xml-sitemap-generator-for-google' ),
'<span>' . esc_html__( 'Enable WordPress attachment pages on the frontend for this option to work - ', 'xml-sitemap-generator-for-google' )
. ' <a href="' . esc_url( $attachment_pages_url ) . '" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Learn more', 'xml-sitemap-generator-for-google' ) . '</a>.</span>'
);
?>
</p>
</div>
</div>
</div>
<?php if ( ! empty( $args['cpt'] ) ) { ?>
<div class="grim-section">
<h3 class="grim-section-title grim-mb-20" data-search-id="general_custom_post_types"><?php esc_html_e( 'Custom Post Types', 'xml-sitemap-generator-for-google' ); ?></h3>
<table class="grim-table wp-list-table widefat fixed striped tags">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Priority', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Update Frequency', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach ( $args['cpt'] as $cpt ) {
Dashboard::render_post_row( $cpt->label, $cpt->name, ! empty( $settings->cpt[ $cpt->name ] ) ? $settings->cpt[ $cpt->name ] : $settings->post );
}
?>
</tbody>
</table>
</div>
<?php } ?>

View File

@@ -0,0 +1,57 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-sitemap-structure">
<h3 class="grim-section-title" data-search-id="sitemap_structure"><?php esc_html_e( 'Sitemap Structure', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20">
<?php
printf(
/* translators: %s Google Index Sitemap URL */
wp_kses_post( 'You can choose either Single Sitemap structure with all links or split links into Multiple Sitemaps for Pages, Posts, Custom Posts, etc, by creating <a href="%s" target="_blank">Sitemap Index</a>.' ),
'https://developers.google.com/search/docs/crawling-indexing/sitemaps/large-sitemaps'
)
?>
</p>
<div class="grim-sitemap-structure-view-section grim-mb-20">
<label class="grim-sitemap-structure-view-section-item sitemap-view-label sitemap-index" for="sitemap-index">
<input id="sitemap-index" class="has-dependency" data-target="sitemap-index-depended" type="radio" name="sitemap_view" value="sitemap-index" <?php checked( 'sitemap-index', esc_attr( $settings->sitemap_view ?? '' ) ); ?>/>
<i class="grim-icon-sitemap-index"></i>
<p>
<b><?php esc_html_e( 'Sitemap Index', 'xml-sitemap-generator-for-google' ); ?></b>
<?php esc_html_e( 'will be generated with Inner Sitemaps', 'xml-sitemap-generator-for-google' ); ?>
</p>
</label>
<label class="grim-sitemap-structure-view-section-item sitemap-view-label single-sitemap" for="single-sitemap">
<input id="single-sitemap" class="has-dependency" data-target="single-sitemap-depended" type="radio" name="sitemap_view" value="" <?php checked( '', esc_attr( $settings->sitemap_view ?? '' ) ); ?>/>
<i class="grim-icon-single-sitemap"></i>
<p>
<b><?php esc_html_e( 'Single Sitemap', 'xml-sitemap-generator-for-google' ); ?></b>
<?php esc_html_e( 'will be generated with all links', 'xml-sitemap-generator-for-google' ); ?>
</p>
</label>
</div>
<p>
<?php
Dashboard::render(
'fields/input.php',
array(
'type' => 'number',
'name' => 'links_per_page',
'class' => 'grim-input sitemap-index-depended',
'value' => $settings->links_per_page ?? 1000,
'label' => esc_html__( 'Links per page:', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( 'Number of links per page in Sitemap Index. Note: Setting a low limit per page may affect the speed of generating the Sitemap Index.', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
</div>
</div>

View File

@@ -0,0 +1,63 @@
<?php
/**
* @var $args
*/
$settings = $args['settings'] ?? new stdClass();
$stylesheet_url = apply_filters( 'sitemap_xsl_template_path', 'sitemap-stylesheet.xsl' );
?>
<div class="grim-section grim-webserver">
<h3 class="grim-section-title" data-search-id="webserver_configuration"><?php esc_html_e( 'Webserver Configuration', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'As you are using NGINX web server, you may need to set up the following Rewrite Rules if you encounter 404 Not Found error for your sitemap:', 'xml-sitemap-generator-for-google' ); ?></p>
<code>
<p id="webserver-configuration">
<?php if ( $settings->enable_sitemap ) { ?>
rewrite ^/<?php echo esc_html( $settings->sitemap_url ); ?>$ /index.php?sitemap_xml=true last;
<br>
<?php } ?>
<?php if ( sgg_pro_enabled() && $settings->enable_html_sitemap ) { ?>
rewrite ^/<?php echo esc_html( $settings->html_sitemap_url ); ?>$ /index.php?sitemap_html=true last;
<br>
<?php } ?>
<?php if ( $settings->enable_google_news ) { ?>
rewrite ^/<?php echo esc_html( $settings->google_news_url ); ?>$ /index.php?google_news=true last;
<br>
<?php } ?>
<?php if ( $settings->enable_image_sitemap ) { ?>
rewrite ^/<?php echo esc_html( $settings->image_sitemap_url ); ?>$ /index.php?image_sitemap=true last;
<br>
<?php } ?>
<?php if ( $settings->enable_video_sitemap ) { ?>
rewrite ^/<?php echo esc_html( $settings->video_sitemap_url ); ?>$ /index.php?video_sitemap=true last;
<br>
<?php } ?>
<?php if ( sgg_is_multilingual() ) { ?>
rewrite ^/multilingual-sitemap.xml$ /index.php?multilingual_sitemap=true last;
<br>
<?php } ?>
rewrite ^/<?php echo esc_html( $stylesheet_url ); ?>$ /index.php?sitemap_xsl=true&$args last;
<br>
rewrite ^/(.*)-sitemap([0-9]*)\.(xml|html)$ /index.php?sitemap_$3=true&inner_sitemap=$1&page=$2 last;
<br>
</p>
<div class="grim-code-copied">
<span class="grim-btn-copied" data-target="webserver-configuration">
<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 class="grim-section-desc"><?php esc_html_e( 'Please note that you may need to adjust the rules based on your server configuration. Rules are generated dynamically according to your Settings.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>

View File

@@ -0,0 +1,49 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-preview-section">
<p class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_sitemap',
'value' => $settings->enable_sitemap ?? true,
'label' => esc_html__( 'XML Sitemap', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'xml-sitemap-depended' ),
)
);
?>
</strong>
</p>
<div class="inside">
<p class="grim-section-desc"><?php esc_html_e( 'Here you can enable XML Sitemap and customize Output URL.', 'xml-sitemap-generator-for-google' ); ?></p>
<div class="grim-mt-20">
<?php
Dashboard::render(
'partials/preview-urls.php',
array(
'languages_label' => esc_html__( 'Sitemaps for other languages:', 'xml-sitemap-generator-for-google' ),
'sitemap_url' => $settings->sitemap_url,
'sitemap_type' => 'sitemap_xml',
'class' => 'xml-sitemap-depended',
'input_name' => 'sitemap_url',
'input_value' => $settings->sitemap_url,
'input_label' => esc_html__( 'XML Sitemap URL:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'xml-sitemap-depended',
'notice_show' => true,
)
);
?>
</div>
</div>
</div>

View File

@@ -0,0 +1,70 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<h3 class="grim-section-title google-news-depended" data-search-id="google_content_post"><?php esc_html_e( 'Content Options', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20 google-news-depended"><?php esc_html_e( 'This settings will be used for generating your Google News.', 'xml-sitemap-generator-for-google' ); ?></p>
<table class="grim-table wp-list-table widefat fixed striped google-news-depended">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php
Dashboard::render_content_field(
'Posts',
'post_google_news',
$settings->post->google_news ?? 1,
'google-news-depended'
);
Dashboard::render_content_field(
'Pages',
'page_google_news',
$settings->page->google_news ?? 0,
'google-news-depended'
);
?>
</tbody>
</table>
</div>
</div>
<?php if ( ! empty( $args['cpt'] ) ) { ?>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<h3 class="grim-section-title grim-mb-20 google-news-depended" data-search-id="google_custom_post_types"><?php esc_html_e( 'Custom Post Types', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<table class="grim-table wp-list-table widefat fixed striped tags google-news-depended">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach ( $args['cpt'] as $cpt ) {
Dashboard::render_content_field(
$cpt->label,
"{$cpt->name}_google_news",
$settings->cpt[ $cpt->name ]->google_news ?? 0,
'google-news-depended'
);
}
?>
</tbody>
</table>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<?php } ?>

View File

@@ -0,0 +1,93 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-google-news <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title google-news-depended" data-search-id="google_exclude"><?php esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc grim-mb-20 google-news-depended"><?php esc_html_e( 'Please search and choose here Posts that should be excluded from Google News:', 'xml-sitemap-generator-for-google' ); ?></p>
<div class="grim-exclude-tab-nav">
<ul class="grim-exclude-tabs">
<li class="grim-exclude-tab grim-exclude-tab--active google-news-depended" data-tab="google-pages">
<?php esc_html_e( 'Posts', 'xml-sitemap-generator-for-google' ); ?>
<span class="grim-term-count">0</span>
</li>
<li class="grim-exclude-tab google-news-depended" data-tab="google-categories">
<?php esc_html_e( 'Categories and Tags', 'xml-sitemap-generator-for-google' ); ?>
<span class="grim-term-count">0</span>
</li>
</ul>
<div class="grim-exclude-tab-content">
<div id="google-pages" class="grim-exclude-tab-panel grim-exclude-tab-panel--active">
<?php
Dashboard::render(
'fields/autocomplete.php',
array(
'label' => esc_html__( 'Exclude Posts:', 'xml-sitemap-generator-for-google' ),
'name' => 'google_news_exclude',
'value' => $settings->google_news_exclude ?? '',
'class' => 'google-news-depended',
)
);
?>
</div>
<div id="google-categories" class="grim-exclude-tab-panel">
<?php
Dashboard::render(
'fields/autocomplete.php',
array(
'type' => 'taxonomy',
'label' => esc_html__( 'Exclude Categories and Tags:', 'xml-sitemap-generator-for-google' ),
'name' => 'google_news_exclude_terms',
'value' => $settings->google_news_exclude_terms ?? '',
'class' => 'google-news-depended',
)
);
?>
</div>
</div>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<div class="grim-section grim-include <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title google-news-depended" data-search-id="google_include"><?php esc_html_e( 'Include only selected Terms', 'xml-sitemap-generator-for-google' ); ?></h3>
<span class="grim-term-count">0</span>
</div>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc grim-mb-20 google-news-depended"><?php esc_html_e( 'Include only selected Categories, Tags and exclude all others:', 'xml-sitemap-generator-for-google' ); ?></p>
<div class="grim-exclude-tab-nav">
<div class="grim-exclude-tab-content">
<div id="google-others" class="grim-exclude-tab-panel grim-exclude-tab-panel--active">
<?php
Dashboard::render(
'fields/autocomplete.php',
array(
'type' => 'taxonomy',
'label' => esc_html__( 'Include only selected Categories, Tags and exclude all others:', 'xml-sitemap-generator-for-google' ),
'name' => 'google_news_include_only_terms',
'value' => $settings->google_news_include_only_terms ?? '',
'class' => 'google-news-depended',
)
);
?>
</div>
</div>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,90 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<p class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_google_news',
'value' => $settings->enable_google_news ?? false,
'label' => esc_html__( 'Google News', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'google-news-depended' ),
)
);
?>
</strong>
</p>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php echo wp_kses_post( 'All options will be available after enabling Google News. Note that only posts from the last 48 hours will be processed by <a href="https://news.google.com" target="_blank">Google News</a>.' ); ?></p>
<p>
<?php
Dashboard::render(
'fields/input.php',
array(
'name' => 'google_news_name',
'value' => $settings->google_news_name ?? '',
'label' => esc_html__( 'Publication Name:', 'xml-sitemap-generator-for-google' ),
'description' => sprintf(
/* translators: %s General Settings URL */
wp_kses_post( 'Default value is General Settings > <a href="%s" target="_blank">Site Title</a>.' ),
esc_url( admin_url( 'options-general.php' ) )
),
'class' => 'grim-input google-news-depended',
'placeholder' => 'Enter publication name',
)
);
?>
</p>
<div class="google-news-depended">
<div class="grim-notice notice inline sitemap-detector grim-mb-20">
<i class="grim-icon-information"></i>
<p>
<?php
echo sprintf(
/* translators: %s: URL to Google News Publisher Center */
esc_html__( 'Source Labels: %s', 'xml-sitemap-generator-for-google' ),
sprintf(
wp_kses(
/* translators: %s: URL */
'<span>' . __( 'To manage your Site Source Labels, please go to the <a href="%s" target="_blank">Google News Publisher Center</a>.', 'xml-sitemap-generator-for-google' ) . '</span>',
array(
'a' => array(
'href' => array(),
'target' => array(),
),
'span' => array(),
)
),
esc_url( 'https://publishercenter.google.com/' )
)
);
?>
</p>
</div>
</div>
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'google_news_old_posts',
'value' => $settings->google_news_old_posts ?? false,
'label' => esc_html__( 'Include Older Posts', 'xml-sitemap-generator-for-google' ),
'class' => 'grim-toggle-label google-news-depended',
)
);
?>
<br>
<small class="google-news-depended grim-section-desc grim-ml-45"><?php esc_html_e( 'Include posts older than 48 hours for informational purposes only. Note that they will NOT be indexed by Google News.', 'xml-sitemap-generator-for-google' ); ?></small>
</div>
</div>

View File

@@ -0,0 +1,41 @@
<?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(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title google-news-depended" data-search-id="google_keywords"><?php esc_html_e( 'Keywords', 'xml-sitemap-generator-for-google' );?></h3>
</div>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc grim-mb-20 google-news-depended"><?php esc_html_e( 'Please select the source from which the Google News Keywords should be extracted.', 'xml-sitemap-generator-for-google' ); ?></p>
<p>
<?php
Dashboard::render(
'fields/select.php',
array(
'label' => esc_html__( 'Keywords from:', 'xml-sitemap-generator-for-google' ),
'name' => 'google_news_keywords',
'class' => 'google-news-depended',
'select_size' => 'grim-select-wide',
'value' => $settings->google_news_keywords ?? '',
'options' => array(
'post_tag' => esc_html__( 'Tags', 'xml-sitemap-generator-for-google' ),
'category' => esc_html__( 'Categories', 'xml-sitemap-generator-for-google' ),
'sgg_keywords' => esc_html__( 'Keywords Taxonomy', 'xml-sitemap-generator-for-google' ),
),
)
);
?>
</p>
<p class="grim-section-desc grim-mt-8 google-news-depended"><?php esc_html_e( 'Custom Keywords Taxonomy will be available for Posts after enabling this option.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,31 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-preview-section">
<h3 class="grim-section-title google-news-depended" data-search-id="google__url"><?php esc_html_e( 'Google News URL', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20 google-news-depended"><?php esc_html_e( 'Here you can preview your Google News and customize Output URL.', 'xml-sitemap-generator-for-google' ); ?></p>
<?php
Dashboard::render(
'partials/preview-urls.php',
array(
'languages_label' => esc_html__( 'Google News for other languages:', 'xml-sitemap-generator-for-google' ),
'sitemap_url' => $settings->google_news_url,
'sitemap_type' => 'google_news',
'class' => 'google-news-depended',
'input_name' => 'google_news_url',
'input_value' => $settings->google_news_url,
'input_label' => esc_html__( 'Google News URL:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'google-news-depended',
'notice_show' => false,
)
);
?>
</div>
</div>

View File

@@ -0,0 +1,33 @@
<?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 pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'google_news_stocks',
'value' => $settings->google_news_stocks ?? false,
'label' => esc_html__( 'Stock Tickers', 'xml-sitemap-generator-for-google' ),
'class' => 'google-news-depended',
)
);
?>
</p>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="google-news-depended">
<?php esc_html_e( 'Stock tickers are most commonly used in articles related to business.', 'xml-sitemap-generator-for-google' ); ?>
<br>
<?php esc_html_e( 'Once this option is enabled, you will be able to specify values under the custom Stock Tickers Taxonomy.', 'xml-sitemap-generator-for-google' ); ?>
</p>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>

View File

@@ -0,0 +1,61 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<h3 class="grim-section-title" data-search-id="image_content_option"><?php esc_html_e( 'Content Options', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'This settings will be used for generating Image Sitemaps.', 'xml-sitemap-generator-for-google' ); ?></p>
<table class="grim-table wp-list-table widefat fixed striped">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php Dashboard::render_content_field( 'Pages', 'page_image_sitemap', $settings->page->image_sitemap ?? 1 ); ?>
<?php Dashboard::render_content_field( 'Posts', 'post_image_sitemap', $settings->post->image_sitemap ?? 1 ); ?>
</tbody>
</table>
</div>
</div>
<?php if ( ! empty( $args['cpt'] ) ) { ?>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<h3 class="grim-section-title grim-mb-20" data-search-id="image_custom_post_types">
<?php esc_html_e( 'Custom Post Types', 'xml-sitemap-generator-for-google' ); ?>
</h3>
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<table class="grim-table wp-list-table widefat fixed striped tags">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach ( $args['cpt'] as $cpt ) {
Dashboard::render_content_field(
$cpt->label,
"{$cpt->name}_image_sitemap",
$settings->cpt[ $cpt->name ]->image_sitemap ?? 0
);
}
?>
</tbody>
</table>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<?php
}

View File

@@ -0,0 +1,275 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-preview-section">
<div class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_image_sitemap',
'value' => $settings->enable_image_sitemap ?? false,
'label' => esc_html__( 'Image Sitemap', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'image-sitemap-depended' ),
)
);
?>
</strong>
<div class="inside">
<p class="grim-section-desc grim-mb-20">
<?php esc_html_e( 'All below options will be available after enabling Image Sitemap. Default Sitemap will only include Images that are used in Content.', 'xml-sitemap-generator-for-google' ); ?>
</p>
</div>
</div>
<div class="inside">
<div class="grim-mt-20">
<?php
Dashboard::render(
'partials/preview-urls.php',
array(
'languages_label' => esc_html__( 'Image Sitemap for other languages:', 'xml-sitemap-generator-for-google' ),
'sitemap_url' => $settings->image_sitemap_url,
'sitemap_type' => 'image_sitemap',
'class' => 'image-sitemap-depended',
'input_name' => 'image_sitemap_url',
'input_value' => $settings->image_sitemap_url,
'input_label' => esc_html__( 'Image Sitemap URL:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'image-sitemap-depended',
'notice_show' => false,
)
);
?>
</div>
</div>
<div class="inside">
<div class="grim-mt-20">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'hide_image_previews',
'class' => 'image-sitemap-depended',
'value' => $settings->hide_image_previews ?? false,
'label' => esc_html__( 'Hide Image Previews', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<p class="grim-section-desc grim-ml-45 image-sitemap-depended"><?php esc_html_e( 'If you are experiencing long loading times, hide image previews in your Sitemap. This will not affect SEO results.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>
<div class="inside">
<div class="grim-mt-20">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'hide_image_sitemap_xsl',
'class' => 'image-sitemap-depended',
'value' => $settings->hide_image_sitemap_xsl ?? false,
'label' => esc_html__( 'Disable XSL Stylesheet', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<p class="grim-section-desc grim-ml-45 image-sitemap-depended">
<?php
printf(
/* translators: %s: Link to Chrome XSLT deprecation documentation */
esc_html__( 'Remove the XSL stylesheet reference to avoid browser deprecation warnings: %s', 'xml-sitemap-generator-for-google' ),
'<a href="' . esc_url( 'https://developer.chrome.com/docs/web-platform/deprecating-xslt' ) . '" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Chrome XSLT Deprecation', 'xml-sitemap-generator-for-google' ) . '</a>'
);
?>
</p>
</div>
</div>
</div>
<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 image-sitemap-depended" data-search-id="image_mime_types"><?php esc_html_e( 'Image MIME Types', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<div class="inside">
<p class="grim-section-desc grim-mb-20 image-sitemap-depended"><?php esc_html_e( 'Allow Image Types in your Image Sitemap.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
<ul class="grim-image-types">
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'image_mime_types[image/jpeg]',
'class' => 'image-sitemap-depended',
'value' => isset( $settings->image_mime_types ) ? $settings->image_mime_types['image/jpeg'] ?? false : true,
'label' => esc_html__( 'JPEG', 'xml-sitemap-generator-for-google' ),
'is_default' => true, 'is_default'
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'image_mime_types[image/png]',
'class' => 'image-sitemap-depended',
'value' => isset( $settings->image_mime_types ) ? $settings->image_mime_types['image/png'] ?? false : true,
'label' => esc_html__( 'PNG', 'xml-sitemap-generator-for-google' ),
'is_default' => true,
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'image_mime_types[image/bmp]',
'class' => 'image-sitemap-depended',
'value' => isset( $settings->image_mime_types ) ? $settings->image_mime_types['image/bmp'] ?? false : true,
'label' => esc_html__( 'BMP', 'xml-sitemap-generator-for-google' ),
'is_default' => true,
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'image_mime_types[image/gif]',
'class' => 'image-sitemap-depended',
'value' => isset( $settings->image_mime_types ) ? $settings->image_mime_types['image/gif'] ?? false : true,
'label' => esc_html__( 'GIF', 'xml-sitemap-generator-for-google' ),
'is_default' => true,
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'image_mime_types[image/webp]',
'class' => 'image-sitemap-depended',
'value' => isset( $settings->image_mime_types ) ? $settings->image_mime_types['image/webp'] ?? false : true,
'label' => esc_html__( 'WEBP', 'xml-sitemap-generator-for-google' ),
'is_default' => true,
)
);
?>
</li>
<li>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'image_mime_types[image/avif]',
'class' => 'image-sitemap-depended',
'value' => isset( $settings->image_mime_types ) ? $settings->image_mime_types['image/avif'] ?? false : true,
'label' => esc_html__( 'AVIF', 'xml-sitemap-generator-for-google' ),
'is_default' => true,
)
);
?>
</li>
</ul>
<?php if ( sgg_pro_enabled() ) { ?>
<input type="hidden" class="image-sitemap-depended" name="image_mime_types[not-image]" value="1">
<?php } ?>
</div>
<?php sgg_show_pro_overlay(); ?>
</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' => 'exclude_broken_images',
'class' => 'image-sitemap-depended',
'value' => $settings->exclude_broken_images ?? false,
'label' => esc_html__( 'Exclude Broken Images', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<div class="inside pro-wrapper">
<p class="grim-section-desc image-sitemap-depended"><?php esc_html_e( 'This option allows to exclude Broken or Not Existing 404 images. Recommended to use this option with Sitemap Cache, as it affects to Sitemap Generating Speed.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</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' => 'include_featured_images',
'class' => 'image-sitemap-depended',
'value' => $settings->include_featured_images ?? false,
'label' => esc_html__( 'Include Featured Images', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<div class="inside pro-wrapper">
<p class="grim-section-desc image-sitemap-depended"><?php esc_html_e( 'Enabling this option includes Featured Images from Pages, Posts, and Custom Posts to your Image Sitemap.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<?php if ( class_exists( 'WooCommerce' ) ) { ?>
<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' => 'include_woo_gallery',
'class' => 'image-sitemap-depended',
'value' => $settings->include_woo_gallery ?? false,
'label' => esc_html__( 'Include WooCommerce Gallery Images', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<div class="inside">
<p class="grim-section-desc image-sitemap-depended"><?php esc_html_e( 'Enabling this option includes WooCommerce Gallery Images from Products to your Image Sitemap.', 'xml-sitemap-generator-for-google' ); ?></p>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<?php } ?>

View File

@@ -0,0 +1,60 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section">
<h3 class="grim-section-title" data-search-id="video_content_option"><?php esc_html_e( 'Content Options', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="inside">
<p class="grim-section-desc grim-mb-20"><?php esc_html_e( 'This settings will be used for generating Video Sitemap.', 'xml-sitemap-generator-for-google' ); ?></p>
<table class="grim-table wp-list-table widefat fixed striped">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php Dashboard::render_content_field( 'Pages', 'page_video_sitemap', $settings->page->video_sitemap ?? 1 ); ?>
<?php Dashboard::render_content_field( 'Posts', 'post_video_sitemap', $settings->post->video_sitemap ?? 1 ); ?>
</tbody>
</table>
</div>
</div>
<?php if ( ! empty( $args['cpt'] ) ) { ?>
<div class="grim-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<h3 class="grim-section-title grim-mb-20" data-search-id="video_custom_post_types">
<?php esc_html_e( 'Custom Post Types', 'xml-sitemap-generator-for-google' ); ?>
</h3>
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<table class="grim-table wp-list-table widefat fixed striped tags">
<thead>
<tr>
<th scope="col"><?php esc_html_e( 'Content', 'xml-sitemap-generator-for-google' ); ?></th>
<th scope="col"><?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?></th>
</tr>
</thead>
<tbody>
<?php
foreach ( $args['cpt'] as $cpt ) {
Dashboard::render_content_field(
$cpt->label,
"{$cpt->name}_video_sitemap",
$settings->cpt[ $cpt->name ]->video_sitemap ?? 0
);
}
?>
</tbody>
</table>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<?php } ?>

View File

@@ -0,0 +1,202 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-section grim-preview-section">
<div class="grim-toggle-section">
<strong>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_video_sitemap',
'value' => $settings->enable_video_sitemap ?? false,
'label' => esc_html__( 'Enable Video Sitemap', 'xml-sitemap-generator-for-google' ),
'class' => 'has-dependency',
'data' => array( 'target' => 'video-sitemap-depended' ),
)
);
?>
</strong>
</div>
<div class="inside">
<p class="grim-mb-20"><?php esc_html_e( 'All below options will be available after enabling Video Sitemap. Sitemap will only include Videos that are used in Content.', 'xml-sitemap-generator-for-google' ); ?></p>
<p class="video-sitemap-depended">
<?php
Dashboard::render(
'partials/preview-urls.php',
array(
'languages_label' => esc_html__( 'Video Sitemap for other languages:', 'xml-sitemap-generator-for-google' ),
'sitemap_url' => $settings->video_sitemap_url,
'sitemap_type' => 'video_sitemap',
'input_name' => 'video_sitemap_url',
'input_value' => $settings->video_sitemap_url,
'input_label' => esc_html__( 'Video Sitemap URL:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'video-sitemap-depended',
'class' => 'video-sitemap-depended',
'notice_show' => false,
)
);
?>
</p>
</div>
<div class="inside">
<div class="grim-mt-20">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'hide_video_sitemap_xsl',
'class' => 'video-sitemap-depended',
'value' => $settings->hide_video_sitemap_xsl ?? false,
'label' => esc_html__( 'Disable XSL Stylesheet', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<p class="grim-section-desc grim-ml-45 video-sitemap-depended">
<?php
printf(
/* translators: %s: Link to Chrome XSLT deprecation documentation */
esc_html__( 'Remove the XSL stylesheet reference to avoid browser deprecation warnings: %s', 'xml-sitemap-generator-for-google' ),
'<a href="' . esc_url( 'https://developer.chrome.com/docs/web-platform/deprecating-xslt' ) . '" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Chrome XSLT Deprecation', 'xml-sitemap-generator-for-google' ) . '</a>'
);
?>
</p>
</div>
</div>
</div>
<div class="grim-section grim-preview-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title video-sitemap-depended" data-search-id="sgg_youtube"><?php esc_html_e( 'YouTube', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc grim-mb-20 video-sitemap-depended"><?php esc_html_e( 'This is required field for retrieving the data from Youtube embeds if you are using them in Contents.', 'xml-sitemap-generator-for-google' ); ?></p>
<p class="video-sitemap-depended">
<?php
Dashboard::render(
'partials/check-button.php',
array(
'input_name' => 'youtube_api_key',
'input_value' => $settings->youtube_api_key,
'input_label' => esc_html__( 'YouTube Data API v3 Key:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'video-sitemap-depended',
'placeholder' => 'Enter API key',
'description' => 'Get your <a href="https://developers.google.com/youtube/v3/getting-started" target="_blank">YouTube Data API key</a> on <a href="https://console.cloud.google.com/apis/" target="_blank">Google Cloud Platform</a>',
'button_name' => 'youtube_check_api_key',
'button_id' => 'youtube-check-api-key',
'button_text' => esc_html__( 'Check YouTube API Key', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<?php
if ( sgg_pro_enabled() ) {
$sgg_errors = get_settings_errors( Dashboard::$slug );
$youtube_key = array_search( 'youtube_api_key_error', array_column( $sgg_errors, 'code' ), true );
if ( false !== $youtube_key && ! empty( $sgg_errors[ $youtube_key ]['message'] ) ) {
?>
<div class="grim-notice grim-notice-error">
<i class="grim-icon-information"></i>
<p>
<span><?php echo wp_kses_post( $sgg_errors[ $youtube_key ]['message'] ); ?></span>
</p>
</div>
<?php
}
}
?>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<div class="grim-section grim-preview-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-section-flex">
<h3 class="grim-section-title video-sitemap-depended" data-search-id="sgg_vimeo"><?php esc_html_e( 'Vimeo', 'xml-sitemap-generator-for-google' ); ?></h3>
</div>
<div class="inside pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p class="grim-section-desc grim-mb-20 video-sitemap-depended"><?php esc_html_e( 'This is required field for retrieving the data from Vimeo embeds if you are using them in Contents.', 'xml-sitemap-generator-for-google' ); ?></p>
<p class="video-sitemap-depended">
<?php
Dashboard::render(
'partials/check-button.php',
array(
'input_name' => 'vimeo_api_key',
'placeholder' => 'Enter access token',
'input_value' => $settings->vimeo_api_key,
'input_label' => esc_html__( 'Vimeo Access Token:', 'xml-sitemap-generator-for-google' ),
'input_class' => 'video-sitemap-depended',
'description' => 'Get your <a href="https://developer.vimeo.com/api/guides/start#generate-access-token" target="_blank">Vimeo Access Token</a> from <a href="https://developer.vimeo.com/apps" target="_blank">Vimeo Developer Apps</a>',
'button_name' => 'vimeo_check_api_key',
'button_id' => 'vimeo-check-api-key',
'button_text' => esc_html__( 'Check Vimeo Access Token', 'xml-sitemap-generator-for-google' ),
)
);
?>
</p>
<?php
if ( sgg_pro_enabled() ) {
$sgg_errors = get_settings_errors( Dashboard::$slug );
$vimeo_key = array_search( 'vimeo_api_key_error', array_column( $sgg_errors, 'code' ), true );
if ( false !== $vimeo_key && ! empty( $sgg_errors[ $vimeo_key ]['message'] ) ) {
?>
<div class="grim-notice grim-notice-error">
<i class="grim-icon-information"></i>
<p>
<span><?php echo wp_kses_post( $sgg_errors[ $vimeo_key ]['message'] ); ?></span>
</p>
</div>
<?php
}
}
?>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>
<div class="grim-section grim-button-section <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<div class="grim-toggle-section">
<div class="pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<p>
<?php
Dashboard::render(
'fields/checkbox.php',
array(
'name' => 'enable_video_api_cache',
'value' => $settings->enable_video_api_cache ?? true,
'label' => esc_html__( 'API Data Cache', 'xml-sitemap-generator-for-google' ),
'class' => 'video-sitemap-depended',
)
);
?>
</p>
<div class="inside">
<p class="video-sitemap-depended grim-mb-20"><?php esc_html_e( 'Caching API Data improves performance by storing and reusing requested Video data from YouTube, Vimeo, and Twitter API.', 'xml-sitemap-generator-for-google' ); ?></p>
<p class="video-sitemap-depended">
<input type="hidden" name="clear_video_api_cache" value="">
<button type="submit" id="clear-video-api-cache" class="grim-button white video-sitemap-depended">
<span>
<i class="grim-icon-trash"></i><?php esc_html_e( 'Clear API Data Cache', 'xml-sitemap-generator-for-google' ); ?>
</span>
</button>
</p>
</div>
</div>
</div>
<?php sgg_show_pro_overlay(); ?>
</div>