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,25 @@
<?php
/**
* @var $args
*/
?>
<div>
<input type="text" name="<?php echo esc_attr( $args['name'] ); ?>-autocomplete" class="sgg-autocomplete grim-input <?php echo esc_attr( $args['class'] ?? '' ); ?>" size="50"
data-target="<?php echo esc_attr( $args['name'] ); ?>"
data-type="<?php echo esc_attr( $args['type'] ?? '' ); ?>"
placeholder="<?php echo esc_attr__( 'Type to Search...', 'xml-sitemap-generator-for-google' ); ?>">
<input type="hidden" id="<?php echo esc_attr( $args['name'] ); ?>"
name="<?php echo esc_attr( $args['name'] ); ?>"
value="<?php echo esc_attr( stripslashes( $args['value'] ) ); ?>">
<div class="expand <?php echo esc_attr( $args['class'] ?? '' ); ?>">
<table class="grim-table wp-list-table widefat fixed striped">
<tbody class="widefat striped sgg-autocomplete-terms">
</tbody>
</table>
<a href="#" class="grim-button grim-mt-10 secondary grim-expand-toggle">
<span>Show More</span>
</a>
</div>
</div>

View File

@@ -0,0 +1,41 @@
<?php
/**
* @var $args
*/
?>
<?php
$is_default = ! empty( $args['is_default'] );
$name = esc_attr( $args['name'] );
$class = esc_attr( $args['class'] ?? '' );
$value = esc_attr( $args['value'] );
$label = esc_html( $args['label'] );
?>
<label
class="<?php echo ! $is_default ? esc_attr( "grim-toggle {$class}" ) : ''; ?>"
for="<?php echo esc_attr( $name ); ?>">
<input type="checkbox"
name="<?php echo esc_attr( $name ); ?>"
id="<?php echo esc_attr( $name ); ?>"
value="1"
class="<?php echo $is_default ? esc_attr( "grim-default-checkbox {$class}" ) : esc_attr( "grim-toggle-input {$class}" ); ?>"
<?php
checked( $value, '1' );
if ( ! empty( $args['data'] ) ) {
foreach ( $args['data'] as $attr => $val ) {
echo " data-{$attr}='" . esc_attr( $val ) . "' ";
}
}
?> />
<?php if ( $is_default ) : ?>
<?php echo esc_html( $label ); ?>
<?php else : ?>
<span class="grim-toggle-slider"></span>
<span class="grim-toggle-label" data-search-id="<?php echo esc_attr( $name ); ?>">
<?php echo esc_html( $label ); ?>
</span>
<?php endif; ?>
</label>

View File

@@ -0,0 +1,10 @@
<?php
/**
* @var $args
*/
?>
<label for="<?php echo esc_attr( $args['name'] ); ?>" class="<?php echo esc_attr( $args['class'] ?? '' ); ?>"><?php echo esc_html( $args['label'] ?? '' ); ?></label>
<input type="color" id="<?php echo esc_attr( $args['name'] ); ?>"
name="<?php echo esc_attr( $args['name'] ); ?>" size="50"
class="<?php echo esc_attr( $args['class'] ?? '' ); ?>"
value="<?php echo esc_attr( $args['value'] ); ?>"/>

View File

@@ -0,0 +1,44 @@
<?php
/**
* @var $args
*/
?>
<tr>
<td class="<?php echo esc_attr( $args['class'] ?? '' ); ?>">
<?php echo esc_html( $args['title'] ?? '' ); ?>
</td>
<td>
<div class="grim-select grim-select-default" data-name="<?php echo esc_attr( $args['name'] ); ?>">
<div class="grim-select__trigger">
<span>
<?php
if ( $args['value'] === '1' ) {
esc_html_e( 'Include', 'xml-sitemap-generator-for-google' );
} else {
esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' );
}
?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<div class="grim-option <?php echo $args['value'] === '1' ? 'selected' : ''; ?>" data-value="1">
<?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?>
</div>
<div class="grim-option <?php echo $args['value'] === '0' || $args['value'] === false ? 'selected' : ''; ?>" data-value="0">
<?php esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' ); ?>
</div>
</div>
</div>
<!-- скрытый настоящий select -->
<select id="<?php echo esc_attr( $args['name'] ); ?>" name="<?php echo esc_attr( $args['name'] ); ?>" class="grim-hidden-select" hidden>
<option value="1" <?php selected( $args['value'], '1' ); ?>>
<?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?>
</option>
<option value="0" <?php selected( $args['value'], '0' ); selected( $args['value'], false ); ?>>
<?php esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' ); ?>
</option>
</select>
</td>
</tr>

View File

@@ -0,0 +1,45 @@
<?php
/**
* @var $args
*/
use GRIM_SG\PTSettings;
$options = [
PTSettings::$ALWAYS => __( 'Always', 'xml-sitemap-generator-for-google' ),
PTSettings::$HOURLY => __( 'Hourly', 'xml-sitemap-generator-for-google' ),
PTSettings::$DAILY => __( 'Daily', 'xml-sitemap-generator-for-google' ),
PTSettings::$WEEKLY => __( 'Weekly', 'xml-sitemap-generator-for-google' ),
PTSettings::$MONTHLY => __( 'Monthly', 'xml-sitemap-generator-for-google' ),
PTSettings::$YEARLY => __( 'Yearly', 'xml-sitemap-generator-for-google' ),
PTSettings::$NEVER => __( 'Never', 'xml-sitemap-generator-for-google' ),
];
$current = $args['value'] ?? PTSettings::$NEVER;
?>
<div class="grim-select grim-select-default" data-name="<?php echo esc_attr( $args['name'] ); ?>">
<div class="grim-select__trigger">
<span>
<?php echo esc_html( $options[ $current ] ?? __( 'Never', 'xml-sitemap-generator-for-google' ) ); ?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<?php foreach ( $options as $value => $label ) : ?>
<div class="grim-option <?php echo (string) $current === (string) $value ? 'selected' : ''; ?>" data-value="<?php echo esc_attr( $value ); ?>">
<?php echo esc_html( $label ); ?>
</div>
<?php endforeach; ?>
</div>
</div>
<select id="<?php echo esc_attr( $args['name'] ); ?>"
name="<?php echo esc_attr( $args['name'] ); ?>"
class="grim-hidden-select"
hidden>
<?php foreach ( $options as $value => $label ) : ?>
<option value="<?php echo esc_attr( $value ); ?>" <?php selected( $current, $value ); ?>>
<?php echo esc_html( $label ); ?>
</option>
<?php endforeach; ?>
</select>

View File

@@ -0,0 +1,20 @@
<?php
/**
* @var $args
*/
?>
<label for="<?php echo esc_attr( $args['name'] ?? '' ); ?>"
data-search-id="<?php echo esc_attr( $args['name'] ?? '' ); ?>"
class="<?php echo esc_attr( $args['class'] ?? '' ); ?>">
<?php echo esc_html( $args['label'] ?? '' ) ; ?>
</label>
<input type="<?php echo esc_attr( $args['type'] ?? 'text' ); ?>" id="<?php echo esc_attr( $args['name'] ?? '' ); ?>"
name="<?php echo esc_attr( $args['name'] ?? '' ); ?>" size="50"
class="<?php echo esc_attr( $args['class'] ?? '' ); ?>"
placeholder="<?php echo esc_attr( $args['placeholder'] ?? '' ); ?>"
value="<?php echo esc_attr( $args['value'] ); ?>"/>
<?php if ( ! empty( $args['description'] ) ) { ?>
<span class="field-description <?php echo esc_attr( $args['class'] ?? '' ); ?>"><?php echo wp_kses_post( $args['description'] ); ?></span>
<?php
}

View File

@@ -0,0 +1,48 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
?>
<tr>
<td><?php echo esc_html( $args['title'] ?? '' ); ?></td>
<td>
<div class="grim-select grim-select-default" data-name="<?php echo esc_attr( $args['option'] ); ?>_include">
<div class="grim-select__trigger">
<span>
<?php
if ( $args['data']->include === '1' ) {
esc_html_e( 'Include', 'xml-sitemap-generator-for-google' );
} else {
esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' );
}
?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<div class="grim-option <?php echo $args['data']->include === '1' ? 'selected' : ''; ?>" data-value="1">
<?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?>
</div>
<div class="grim-option <?php echo $args['data']->include === '0' ? 'selected' : ''; ?>" data-value="0">
<?php esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' ); ?>
</div>
</div>
</div>
<select id="<?php echo esc_attr( $args['option'] ); ?>_include"
name="<?php echo esc_attr( $args['option'] ); ?>_include"
class="grim-hidden-select"
hidden>
<option value="1" <?php selected( $args['data']->include, '1' ); ?>>
<?php esc_html_e( 'Include', 'xml-sitemap-generator-for-google' ); ?>
</option>
<option value="0" <?php selected( $args['data']->include, '0' ); ?>>
<?php esc_html_e( 'Exclude', 'xml-sitemap-generator-for-google' ); ?>
</option>
</select>
</td>
<td><?php Dashboard::render_priority_field( $args['option'] . '_priority', $args['data']->priority ); ?></td>
<td><?php Dashboard::render_frequency_field( $args['option'] . '_frequency', $args['data']->frequency ); ?></td>
</tr>

View File

@@ -0,0 +1,38 @@
<?php
/**
* @var $args
*/
?>
<div class="grim-select grim-select-default" data-name="<?php echo esc_attr( $args['name'] ); ?>">
<div class="grim-select__trigger">
<span>
<?php
$value = $args['value'] ?? '0';
echo esc_html( number_format( (int) $value / 10, 1 ) );
?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<?php for ( $i = 0; $i <= 10; $i++ ) :
$label = number_format( $i / 10, 1 );
?>
<div class="grim-option <?php echo (string) $value === (string) $i ? 'selected' : ''; ?>" data-value="<?php echo esc_attr( $i ); ?>">
<?php echo esc_html( $label ); ?>
</div>
<?php endfor; ?>
</div>
</div>
<select id="<?php echo esc_attr( $args['name'] ); ?>"
name="<?php echo esc_attr( $args['name'] ); ?>"
class="grim-hidden-select"
hidden>
<?php for ( $i = 0; $i <= 10; $i++ ) :
$label = number_format( $i / 10, 1 );
?>
<option value="<?php echo esc_attr( $i ); ?>" <?php selected( (string) $value, (string) $i ); ?>>
<?php echo esc_html( $label ); ?>
</option>
<?php endfor; ?>
</select>

View File

@@ -0,0 +1,13 @@
<?php
/**
* @var $args
*/
?>
<input type="radio" name="<?php echo esc_attr( $args['name'] ); ?>" id="<?php echo esc_attr( $args['id'] ); ?>" value="<?php echo esc_attr( $args['value'] ); ?>" <?php checked( esc_attr( $args['value'] ), esc_attr( $args['current_value'] ) ); ?> />
<label for="<?php echo esc_attr( $args['id'] ); ?>"><?php echo esc_html( $args['label'] ); ?>
<?php if ( ! empty( $args['description'] ) ) { ?>
<div class="field-description"><?php echo wp_kses_post( $args['description'] ); ?></div>
<?php
} ?>
</label>

View File

@@ -0,0 +1,35 @@
<?php
/**
* @var $args
*/
?>
<div class="grim-select-label <?php echo esc_attr( $args['class'] ); ?>" data-search-id="<?php echo esc_attr( $args['name'] ?? '' ); ?>">
<?php echo esc_html( $args['label'] ); ?>
</div>
<div class="grim-select <?php echo esc_attr( $args['select_size'] ?? 'grim-select-default' ); ?> <?php echo esc_attr( $args['class'] ); ?>" 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">
<div class="grim-option" data-value="">
<?php esc_html_e( 'None', 'xml-sitemap-generator-for-google' ); ?>
</div>
<?php foreach ( $args['options'] as $value => $label ) { ?>
<div class="grim-option <?php echo $args['value'] === $value ? '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>
<option value="" <?php selected( $args['value'], '' ); ?>><?php esc_html_e( 'None', 'xml-sitemap-generator-for-google' ); ?></option>
<?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>

View File

@@ -0,0 +1,55 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$languages = sgg_get_languages();
$wpml_languages = apply_filters( 'wpml_active_languages', array() );
$input_class = $args['input_class'] ?? '';
$input_label = $args['input_label'] ?? '';
$input_value = $args['input_value'] ?? '';
$input_name = $args['input_name'] ?? '';
$description = $args['description'] ?? '';
$button_id = $args['button_id'] ?? '';
$button_text = $args['button_text'] ?? '';
$button_name = $args['button_name'] ?? '';
$placeholder = $args['placeholder'] ?? '';
?>
<div class="grim-previews-url">
<p>
<?php
Dashboard::render(
'fields/input.php',
array(
'placeholder' => $placeholder,
'name' => $input_name,
'value' => $input_value,
'label' => $input_label,
'class' => $input_class,
)
);
?>
</p>
<div class="video-sitemap-depended">
<input type="hidden" name="<?php echo esc_attr( $button_name ); ?>" value="">
<button type="submit" id="<?php echo esc_attr( $button_id ); ?>" class="grim-button grim-submit white video-sitemap-depended">
<span>
<?php echo esc_html( $button_text ); ?>
</span>
</button>
</div>
</div>
<div class="<?php echo esc_attr( $args['class'] ?? '' ); ?>">
<?php echo esc_html( $args['label'] ?? '' ); ?>
<span class="grim-previews-url-desc <?php echo esc_attr( $args['input_class'] ?? '' ); ?>">
<?php
if ( ! empty( $description ) ) {
echo wp_kses_post( $description );
}
?>
</span>
</div>

View File

@@ -0,0 +1,44 @@
<?php
/**
* @var $args
*/
$settings = $args['settings'] ?? new stdClass();
?>
<div class="grim-header">
<div class="grim-section grim-nav">
<div class="grim-nav-wrapper">
<div class="grim-nav-tab-wrapper">
<nav class="grim-nav-tab nav-tab-wrapper">
<a href="#" class="grim-nav-tab-item nav-tab nav-tab-active" data-id="general"><i class="grim-icon-home"></i><?php esc_html_e( 'General', 'xml-sitemap-generator-for-google' ); ?></a>
<a href="#" class="grim-nav-tab-item nav-tab" data-id="google-news"><i class="grim-icon-google"></i><?php esc_html_e( 'Google News', 'xml-sitemap-generator-for-google' ); ?></a>
<a href="#" class="grim-nav-tab-item nav-tab" data-id="image-sitemap"><i class="grim-icon-image"></i><?php esc_html_e( 'Image Sitemap', 'xml-sitemap-generator-for-google' ); ?></a>
<a href="#" class="grim-nav-tab-item nav-tab" data-id="video-sitemap"><i class="grim-icon-play-circle"></i><?php esc_html_e( 'Video Sitemap', 'xml-sitemap-generator-for-google' ); ?></a>
<a href="#" class="grim-nav-tab-item nav-tab" data-id="advanced"><i class="grim-icon-sliders-horizontal"></i><?php esc_html_e( 'Advanced', 'xml-sitemap-generator-for-google' ); ?></a>
</nav>
</div>
<div class="grim-settings-search">
<div class="grim-settings-search-input-wrapper">
<input type="search" class="grim-input" id="grim-settings-search-input" placeholder="<?php esc_attr_e( 'Search settings...', 'xml-sitemap-generator-for-google' ); ?>">
<div class="grim-settings-search-cancel grim-button white">
<span><?php esc_html_e( 'Cancel', 'xml-sitemap-generator-for-google' ); ?></span>
</div>
</div>
<div class="grim-search-results" id="grim-search-results">
<div class="grim-search-results-list"></div>
</div>
</div>
<div class="grim-nav-wrapper-actions">
<div class="grim-search-action">
<div class="grim-search-action-btn">
<i class="grim-icon-search"></i>
</div>
</div>
<button type="submit" name="submit" class="grim-button secondary">
<span><?php esc_html_e( 'Save changes', 'xml-sitemap-generator-for-google' ); ?></span>
</button>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,101 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
$sitemap_type = $args['sitemap_type'] ?? 'sitemap_xml';
$sitemap_url = $args['sitemap_url'] ?? '';
$languages = sgg_get_languages( true );
$wpml_languages = apply_filters( 'wpml_active_languages', array() );
$input_class = $args['input_class'] ?? '';
$input_label = $args['input_label'] ?? '';
$input_value = $args['input_value'] ?? '';
$input_name = $args['input_name'] ?? '';
$notice_show = $args['notice_show'] ?? false;
?>
<div class="grim-previews-url">
<p>
<?php
Dashboard::render(
'fields/input.php',
array(
'name' => $input_name,
'value' => $input_value,
'label' => $input_label,
'class' => $input_class,
)
);
?>
</p>
<a href="<?php echo esc_url( sgg_get_sitemap_url( $sitemap_url, $sitemap_type ) ); ?>" class="grim-button white <?php echo esc_attr( $input_class ); ?>" target="_blank">
<span>
<?php esc_html_e( 'Preview', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
</div>
<div class="<?php echo esc_attr( $args['class'] ?? '' ); ?>">
<?php echo esc_html( $args['label'] ?? '' ); ?>
<span class="grim-previews-url-desc">
<?php echo esc_url( sgg_get_sitemap_url( $sitemap_url, $sitemap_type ) ); ?>
</span>
<?php if ( ! empty( $languages ) || ! empty( $wpml_languages ) ) { ?>
<p class="<?php echo esc_attr( $args['class'] ?? '' ); ?> grim-preview-multilang grim-mt-10">
<span class="grim-preview-multilang-label"><?php echo esc_html( $args['languages_label'] ?? '' ); ?></span>
<?php
foreach ( $languages as $language ) {
?>
<br>
<a href="<?php echo esc_url( sgg_get_sitemap_url( "{$language}/{$sitemap_url}", $sitemap_type ) ); ?>" class="grim-mb-5" target="_blank">
<?php echo esc_url( sgg_get_sitemap_url( "{$language}/{$sitemap_url}", $sitemap_type ) ); ?>
</a>
<?php
}
if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
foreach ( $wpml_languages as $language ) {
if ( apply_filters( 'wpml_default_language', null ) === $language['code'] ) {
continue;
}
$url = strpos( $language['url'], '?lang=' ) !== false
? str_replace( '?lang=', "{$sitemap_url}?lang=", $language['url'] )
: trim( $language['url'], '/' ) . "/$sitemap_url";
?>
<br>
<a href="<?php echo esc_url( $url ); ?>" target="_blank" class="grim-mb-5">
<?php echo esc_url( $url ); ?>
</a>
<?php
}
}
?>
</p>
<?php if ( 'sitemap_xml' === $sitemap_type ) { ?>
<p class="<?php echo esc_attr( $args['class'] ?? '' ); ?> grim-preview-multilang">
<span class="grim-preview-multilang-label"><?php esc_html_e( 'Multilingual Sitemap Index:', 'xml-sitemap-generator-for-google' ); ?></span>
<br>
<a href="<?php echo esc_url( site_url( 'multilingual-sitemap.xml' ) ); ?>" target="_blank">
<?php echo esc_url( site_url( 'multilingual-sitemap.xml' ) ); ?>
</a>
</p>
<?php } ?>
<?php } ?>
<?php
if ( $notice_show ) {
Dashboard::render(
'partials/sitemap-detector.php',
array(
'sitemap_url' => $sitemap_url,
)
);
}
?>
</div>

View File

@@ -0,0 +1,8 @@
<div class="pro-title-badge">
<span class="pro-title-badge-title"><i class="grim-icon-base-tooltip"></i><?php esc_html_e( 'This feature is available on Premium version', 'xml-sitemap-generator-for-google' ); ?></span>
<a href="<?php echo esc_url( sgg_get_pro_url() ); ?>" class="grim-button secondary" target="_blank">
<span>
<?php esc_html_e( 'Get Now', 'xml-sitemap-generator-for-google' ); ?>
</span>
</a>
</div>

View File

@@ -0,0 +1,6 @@
<?php
/**
* @var $args
*/
?>
<div class="pro-overlay"></div>

View File

@@ -0,0 +1,35 @@
<?php
/**
* @var $args
*/
wp_enqueue_style( 'sgg-rate-banner' );
wp_enqueue_style( 'sgg-icons' );
?>
<div class="grim-container grim-rate-container notice <?php echo esc_attr( $args['wrapper_classes'] ?? '' ); ?>">
<div class="grim-section grim-rate grim-notice-data <?php echo esc_attr( $args['notice_class'] ?? '' ); ?>" data-notice="<?php echo esc_attr( $args['data_notice'] ); ?>">
<?php if ( ! empty( $args['label'] ) ) : ?>
<h3 class="grim-rate-title"><?php echo wp_kses_post( $args['label'] ); ?></h3>
<?php endif; ?>
<p class="grim-rate-description">
<?php echo wp_kses_post( $args['description'] ) ?? ''; ?>
</p>
<div class="grim-rate-actions">
<?php if( ! empty( $args['extra_btn_url'] ) ) : ?>
<a class="grim-button white <?php echo esc_attr( $args['extra_btn_class'] ); ?>" target="_blank" href="<?php echo esc_url( $args['extra_btn_url'] ); ?>">
<span><?php echo wp_kses_post( $args['extra_btn_text'] ); ?></span>
</a>
<?php else: ?>
<a class="grim-button white sgg-notice">
<span><?php esc_html_e( 'Dismiss', 'xml-sitemap-generator-for-google' ); ?></span>
</a>
<?php endif; ?>
<a href="<?php echo esc_url( $args['button_url'] ); ?>" target="_blank" class="grim-button secondary sgg-notice">
<span><?php echo esc_html( $args['button_text'] ) ?><i class="grim-icon-arrow-right"></i></span>
</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,225 @@
<?php
use GRIM_SG\Dashboard;
$settings = $args['settings'] ?? new stdClass();
$previews = array();
$tools = array();
// XML Sitemap
if ( $settings->enable_sitemap ) {
$previews[] = array(
'label' => __( 'XML Sitemap', 'xml-sitemap-generator-for-google' ),
'url' => sgg_get_sitemap_url( $settings->sitemap_url, 'sitemap_xml' ),
);
}
// HTML Sitemap (Pro)
if ( sgg_pro_enabled() && $settings->enable_html_sitemap ) {
$previews[] = array(
'label' => __( 'HTML Sitemap', 'xml-sitemap-generator-for-google' ),
'url' => sgg_get_sitemap_url( $settings->html_sitemap_url, 'sitemap_html' ),
);
}
// Google News
if ( $settings->enable_google_news ) {
$previews[] = array(
'label' => __( 'Google News', 'xml-sitemap-generator-for-google' ),
'url' => sgg_get_sitemap_url( $settings->google_news_url, 'google_news' ),
);
}
// Image Sitemap
if ( $settings->enable_image_sitemap ) {
$previews[] = array(
'label' => __( 'Image Sitemap', 'xml-sitemap-generator-for-google' ),
'url' => sgg_get_sitemap_url( $settings->image_sitemap_url, 'image_sitemap' ),
);
}
// Video Sitemap
if ( $settings->enable_video_sitemap ) {
$previews[] = array(
'label' => __( 'Video Sitemap', 'xml-sitemap-generator-for-google' ),
'url' => sgg_get_sitemap_url( $settings->video_sitemap_url, 'video_sitemap' ),
);
}
// IndexNow
if ( $settings->enable_indexnow ) {
$tools[] = array(
'name' => 'sgg-indexnow',
'label' => __( 'Ping IndexNow Protocol', 'xml-sitemap-generator-for-google' ),
'class' => 'white',
);
}
// Flush Rewrite Rules
$tools[] = array(
'name' => 'sgg-flush-rewrite-rules',
'label' => __( 'Flush Rewrite Rules', 'xml-sitemap-generator-for-google' ),
'class' => 'white',
);
// Clear Cache
if ( $settings->enable_cache ) {
$tools[] = array(
'name' => 'sgg-clear-cache',
'label' => __( 'Clear Sitemaps Cache', 'xml-sitemap-generator-for-google' ),
'class' => 'delete',
);
}
$plugin_links = array(
array(
'title' => esc_html__( 'Documentation', 'xml-sitemap-generator-for-google' ),
'icon' => 'grim-icon-file-text',
'link' => 'https://wpgrim.com/docs/google-xml-sitemaps-generator/?utm_source=sgg-plugin&utm_medium=documentation&utm_campaign=xml_sitemap',
),
array(
'title' => esc_html__( 'Support Forum', 'xml-sitemap-generator-for-google' ),
'icon' => 'grim-icon-help',
'link' => esc_url( sgg_get_support_url() ),
),
array(
'title' => sprintf(
/* translators: %s: Rating stars */
esc_html__( 'Rate %s', 'xml-sitemap-generator-for-google' ),
'<strong>' . esc_html__( '★★★★★', 'xml-sitemap-generator-for-google' ) . '</strong>'
),
'icon' => 'grim-icon-star',
'link' => esc_url( sgg_get_review_url() ),
'class' => 'grim-rate-button',
),
);
if ( sgg_pro_enabled() ) {
array_unshift(
$plugin_links,
array(
'title' => esc_html__( 'Account & Support', 'xml-sitemap-generator-for-google' ),
'icon' => 'grim-icon-user',
'link' => 'https://wpgrim.com/account?utm_source=sgg-plugin&utm_medium=account&utm_campaign=xml_sitemap',
)
);
}
$footer_links = array(
array(
'title' => esc_html__( 'Google Search Console', 'xml-sitemap-generator-for-google' ),
'link' => 'https://search.google.com/search-console',
),
array(
'title' => esc_html__( 'Google News Help Center', 'xml-sitemap-generator-for-google' ),
'link' => 'https://support.google.com/googlenews/',
),
array(
'title' => esc_html__( 'Show up in Google News', 'xml-sitemap-generator-for-google' ),
'link' => 'https://support.google.com/news/publisher-center/answer/9607025',
),
array(
'title' => esc_html__( 'IndexNow Protocol', 'xml-sitemap-generator-for-google' ),
'link' => 'https://www.indexnow.org/',
),
array(
'title' => esc_html__( 'Bing Webmaster Tools', 'xml-sitemap-generator-for-google' ),
'link' => 'https://www.bing.com/webmasters',
),
array(
'title' => esc_html__( 'Yandex Webmaster', 'xml-sitemap-generator-for-google' ),
'link' => 'https://webmaster.yandex.com/sites/',
),
array(
'title' => esc_html__( 'XML Sitemap Validator', 'xml-sitemap-generator-for-google' ),
'link' => 'https://www.xml-sitemaps.com/validate-xml-sitemap.html',
),
);
?>
<div class="grim-section">
<?php if ( ! empty( $tools ) ) : ?>
<div class="grim-sidebar-section grim-sidebar-actions">
<h3 class="grim-section-title"><?php esc_html_e( 'Tools', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="grim-sidebar-list">
<?php foreach ( $tools as $tool ) : ?>
<div class="grim-sidebar-list-item">
<div class="grim-button white <?php echo esc_attr( $tool['class'] ); ?>">
<input type="hidden" name="<?php echo esc_attr( $tool['name'] ); ?>" value="">
<input
type="submit"
id="<?php echo esc_attr( $tool['name'] ); ?>"
name="<?php echo esc_attr( $tool['name'] ); ?>-button"
value="<?php echo esc_attr( $tool['label'] ); ?>"
class="<?php echo esc_attr( $tool['class'] ); ?>"
>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<?php if ( ! empty( $previews ) ) : ?>
<div class="grim-sidebar-section">
<h3 class="grim-section-title"><?php esc_html_e( 'Preview', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="grim-sidebar-list">
<?php foreach ( $previews as $item ) : ?>
<div class="grim-sidebar-list-item">
<a href="<?php echo esc_url( $item['url'] ); ?>" class="grim-button white button-icon-right" target="_blank">
<span>
<?php echo wp_kses_post( $item['label'] ); ?>
<i class="grim-icon-external-link"></i>
</span>
</a>
</div>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<?php
if ( ! sgg_pro_enabled() ) {
Dashboard::render(
'partials/rate-banner.php',
array(
'description' => sprintf(
/* translators: %s: Pro version */
esc_html__( 'If you want to unlock more features, please check out our %s.', 'xml-sitemap-generator-for-google' ),
'<a href="' . esc_url( sgg_get_pro_url( 'notice' ) ) . '" target="_blank">' . esc_html__( 'Pro version', 'xml-sitemap-generator-for-google' ) . '</a>'
),
'button_text' => esc_html__( 'Read More', 'xml-sitemap-generator-for-google' ),
'button_url' => esc_url( sgg_get_pro_url( 'notice' ) ),
'data_notice' => 'sgg_buy_pro',
'notice_class' => 'grim-pro-notice grim-sidebar-notice',
)
);
}
?>
<div class="grim-sidebar-section grim-sidebar-actions">
<h3 class="grim-section-title"><?php esc_html_e( 'Useful', 'xml-sitemap-generator-for-google' ); ?></h3>
<?php foreach ( $plugin_links as $plugin_link ) : ?>
<div class="grim-sidebar-list-item grim-sidebar-actions-item">
<a class="grim-button white <?php echo ! empty( $plugin_link['class'] ) ? esc_attr( $plugin_link['class'] ) : ''; ?>" href="<?php echo esc_url( $plugin_link['link'] ); ?>" target="_blank">
<span>
<i class="<?php echo esc_attr( $plugin_link['icon'] ); ?>"></i><?php echo wp_kses_post( $plugin_link['title'] ); ?>
</span>
</a>
</div>
<?php endforeach; ?>
</div>
<div class="grim-sidebar-section">
<h3 class="grim-section-title"><?php esc_html_e( 'Links', 'xml-sitemap-generator-for-google' ); ?></h3>
<div class="grim-sidebar-links">
<?php foreach ( $footer_links as $footer_link ) : ?>
<a class="grim-sidebar-links-item" target="_blank" href="<?php echo esc_url( $footer_link['link'] ); ?>"><?php echo esc_html( $footer_link['title'] ); ?></a>
<?php endforeach; ?>
</div>
</div>
<hr>
<div class="grim-sidebar-section grim-sidebar-wrapper-info">
<div class="grim-sidebar-wrapper-info-logo">
<img src="<?php echo esc_url( plugins_url( 'assets/images/sgg-logo.svg', GRIM_SG_FILE ) ); ?>" alt="logo" width="60" height="60"/>
</div>
<div class="grim-sidebar-wrapper-info-title">
<a href="https://wpgrim.com/dynamic-xml-sitemaps-generator-for-google/?utm_source=sgg-plugin&utm_medium=footer&utm_campaign=xml_sitemap" target="_blank">Dynamic XML Sitemaps Generator For Google Pro</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,28 @@
<?php
/**
* @var $args
*/
$sitemap_url = $args['sitemap_url'];
if ( file_exists( ABSPATH . $sitemap_url ) ) {
$notice_status = 'error';
$notice_message = esc_html__( 'Warning! Static Sitemap File was detected in this URL. Please remove this file from the WordPress Root Directory to use Dynamic Sitemap.', 'xml-sitemap-generator-for-google' );
} else {
$notice_status = 'success';
$notice_message = sprintf(
esc_html__( 'No static sitemap file was detected in this URL. %s', 'xml-sitemap-generator-for-google' ),
'<span>' . esc_html__( 'Above URL will open the awesome Dynamic Sitemap.', 'xml-sitemap-generator-for-google' ) . '</span>'
);
}
if ( ! empty( $sitemap_url ) && ! empty( $notice_message ) ) {
?>
<div class="grim-notice notice-<?php echo esc_html( $notice_status ); ?> inline sitemap-detector">
<i class="grim-icon-check-circle"></i>
<p>
<?php echo wp_kses_post( $notice_message ); ?>
</p>
</div>
<?php
}

View File

@@ -0,0 +1,145 @@
<?php
/**
* @var $post
*/
$exclude = get_post_meta( $post->ID, '_sitemap_exclude', true );
$priority = get_post_meta( $post->ID, '_sitemap_priority', true );
$frequency = get_post_meta( $post->ID, '_sitemap_frequency', true );
$frequency = isset( $frequency ) ? (string) $frequency : '';
$priority = isset( $priority ) ? (string) $priority : '';
$frequency_options = array(
'' => __( 'Default', 'xml-sitemap-generator-for-google' ),
'always' => __( 'Always', 'xml-sitemap-generator-for-google' ),
'hourly' => __( 'Hourly', 'xml-sitemap-generator-for-google' ),
'daily' => __( 'Daily', 'xml-sitemap-generator-for-google' ),
'weekly' => __( 'Weekly', 'xml-sitemap-generator-for-google' ),
'monthly' => __( 'Monthly', 'xml-sitemap-generator-for-google' ),
'yearly' => __( 'Yearly', 'xml-sitemap-generator-for-google' ),
'never' => __( 'Never', 'xml-sitemap-generator-for-google' ),
);
wp_enqueue_style( 'sgg-meta-box', GRIM_SG_URL . 'assets/css/meta-box.min.css', array(), GRIM_SG_VERSION );
wp_enqueue_style( 'sgg-icons', GRIM_SG_URL . 'assets/fonts/icons/style.css', array(), GRIM_SG_VERSION );
wp_enqueue_script( 'sgg-scripts', GRIM_SG_URL . 'assets/js/scripts.js', array( 'jquery' ), GRIM_SG_VERSION, true );
wp_nonce_field( 'sgg_pro_meta_box', 'sgg_pro_meta_box_nonce' );
?>
<div class="grim-section grim-section-post-meta pro-wrapper <?php echo esc_attr( sgg_pro_class() ); ?>">
<?php sgg_show_pro_badge(); ?>
<p class="grim-section-desc"><?php esc_html_e( 'Custom Sitemap Options for the Current Post such as Exclude from Sitemap, Post Priority, Post Frequency.', 'xml-sitemap-generator-for-google' ); ?></p>
<table class="grim-table wp-list-table widefat fixed striped">
<?php if ( ! apply_filters( 'xml_sitemap_disable_post_meta__exclude_sitemap', false ) ) { ?>
<tr>
<td>
<label for="_sitemap_exclude"><?php esc_html_e( 'Exclude from Sitemap', 'xml-sitemap-generator-for-google' ); ?></label>
</td>
<td>
<label for="_sitemap_exclude">
<input class="grim-default-checkbox" type="checkbox" name="_sitemap_exclude" id="_sitemap_exclude" value="1" <?php checked( $exclude, '1' ); ?> <?php disabled( ! sgg_pro_enabled() ); ?> />
</label>
</td>
</tr>
<?php } ?>
<?php if ( ! apply_filters( 'xml_sitemap_disable_post_meta__sitemap_priority', false ) ) { ?>
<tr>
<td>
<label for="_sitemap_priority"><?php esc_html_e( 'Post Priority', 'xml-sitemap-generator-for-google' ); ?></label>
</td>
<td>
<div class="grim-select grim-select-default"
data-name="_sitemap_priority">
<div class="grim-select__trigger">
<span>
<?php
if ( $priority === '' ) {
esc_html_e( 'Default', 'xml-sitemap-generator-for-google' );
} else {
echo esc_html( number_format( (int) $priority / 10, 1 ) );
}
?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<div class="grim-option <?php echo $priority === '' ? 'selected' : ''; ?>" data-value="">
<?php esc_html_e( 'Default', 'xml-sitemap-generator-for-google' ); ?>
</div>
<?php for ( $i = 0; $i <= 10; $i++ ) :
$label = number_format( $i / 10, 1 );
?>
<div class="grim-option <?php echo (string) $priority === (string) $i ? 'selected' : ''; ?>"
data-value="<?php echo esc_attr( $i ); ?>">
<?php echo esc_html( $label ); ?>
</div>
<?php endfor; ?>
</div>
</div>
<select id="_sitemap_priority"
name="_sitemap_priority"
class="grim-hidden-select"
hidden>
<option value="" <?php selected( $priority, '' ); ?>>
<?php esc_html_e( 'Default', 'xml-sitemap-generator-for-google' ); ?>
</option>
<?php for ( $i = 0; $i <= 10; $i++ ) :
$label = number_format( $i / 10, 1 );
?>
<option value="<?php echo esc_attr( $i ); ?>" <?php selected( (string) $priority, (string) $i ); ?>>
<?php echo esc_html( $label ); ?>
</option>
<?php endfor; ?>
</select>
</td>
</tr>
<?php } ?>
<?php if ( ! apply_filters( 'xml_sitemap_disable_post_meta__sitemap_frequency', false ) ) { ?>
<tr>
<td>
<label for="_sitemap_frequency"><?php esc_html_e( 'Post Frequency', 'xml-sitemap-generator-for-google' ); ?></label>
</td>
<td>
<div class="grim-select grim-select-default"
data-name="_sitemap_frequency">
<div class="grim-select__trigger">
<span>
<?php echo esc_html( $frequency_options[ $frequency ] ?? __( 'Default', 'xml-sitemap-generator-for-google' ) ); ?>
</span>
<i class="grim-icon-chevron-down"></i>
</div>
<div class="grim-options">
<?php foreach ( $frequency_options as $opt_value => $label ) : ?>
<div class="grim-option <?php echo (string) $frequency === (string) $opt_value ? 'selected' : ''; ?>"
data-value="<?php echo esc_attr( $opt_value ); ?>">
<?php echo esc_html( $label ); ?>
</div>
<?php endforeach; ?>
</div>
</div>
<select id="_sitemap_frequency"
name="_sitemap_frequency"
class="grim-hidden-select"
hidden>
<?php foreach ( $frequency_options as $opt_value => $label ) : ?>
<option value="<?php echo esc_attr( $opt_value ); ?>" <?php selected( (string) $frequency, (string) $opt_value ); ?>>
<?php echo esc_html( $label ); ?>
</option>
<?php endforeach; ?>
</select>
</td>
</tr>
<?php } ?>
</table>
<?php sgg_show_pro_overlay( array( 'utm' => 'meta-box' ) ); ?>
</div>

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>

View File

@@ -0,0 +1,127 @@
<?php
/**
* @var $args
*/
use GRIM_SG\Dashboard;
?>
<div class="grim-container grim-mb-20">
<?php
settings_errors( Dashboard::$slug );
?>
</div>
<div class="wrap grim-wrapper grim-container">
<div id="poststuff" class="metabox-holder">
<div>
<form method="post" enctype="multipart/form-data" id="settings-form">
<?php
Dashboard::render( 'partials/navigation.php', $args );
?>
<?php wp_nonce_field( GRIM_SG_BASENAME . '-settings', 'sgg_settings_nonce' ); ?>
<div id="post-body-content" class="has-sidebar-content">
<div class="meta-box-sortabless">
<div class="nav-tabs-content">
<div class="section">
<!-- General -->
<?php Dashboard::render( 'sections/general/general-settings.php', $args ); ?>
<!-- Output URLs -->
<?php Dashboard::render( 'sections/general/xml-sitemap.php', $args ); ?>
<!-- HTML Sitemap -->
<?php Dashboard::render( 'sections/general/html-sitemap.php', $args ); ?>
<!-- Webserver Configuration -->
<?php
if ( sgg_is_nginx() && sgg_is_using_mod_rewrite() ) {
Dashboard::render( 'sections/general/webserver-configuration.php', $args );
}
?>
<!-- Sitemap Structure -->
<?php Dashboard::render( 'sections/general/sitemap-structure.php', $args ); ?>
<!-- Custom Sitemaps -->
<?php Dashboard::render( 'sections/general/custom-sitemaps.php', $args ); ?>
<!-- Additional Pages -->
<?php Dashboard::render( 'sections/general/additional.php', $args ); ?>
<!-- Exclude -->
<?php Dashboard::render( 'sections/general/exclude.php', $args ); ?>
<!-- Posts Priority -->
<?php Dashboard::render( 'sections/general/posts-priority.php', $args ); ?>
<!-- Sitemap -->
<?php Dashboard::render( 'sections/general/sitemap-options.php', $args ); ?>
</div>
<div class="section">
<!-- General -->
<?php Dashboard::render( 'sections/google-news/general-settings.php', $args ); ?>
<!-- Output URLs -->
<?php Dashboard::render( 'sections/google-news/output.php', $args ); ?>
<!-- Keywords -->
<?php Dashboard::render( 'sections/google-news/keywords.php', $args ); ?>
<!-- Stock Tickers -->
<?php Dashboard::render( 'sections/google-news/stock-tickers.php', $args ); ?>
<!-- Exclude -->
<?php Dashboard::render( 'sections/google-news/exclude.php', $args ); ?>
<!-- Content -->
<?php Dashboard::render( 'sections/google-news/content.php', $args ); ?>
</div>
<div class="section">
<!-- Image Sitemap -->
<?php Dashboard::render( 'sections/image-sitemap/general-settings.php', $args ); ?>
<!-- Content -->
<?php Dashboard::render( 'sections/image-sitemap/content.php', $args ); ?>
</div>
<div class="section">
<!-- Video Sitemap -->
<?php Dashboard::render( 'sections/video-sitemap/general-settings.php', $args ); ?>
<!-- Content -->
<?php Dashboard::render( 'sections/video-sitemap/content.php', $args ); ?>
</div>
<div class="section">
<!-- Cache -->
<?php Dashboard::render( 'sections/advanced/cache.php', $args ); ?>
<!-- Minimize -->
<?php Dashboard::render( 'sections/advanced/optimize.php', $args ); ?>
<!-- Styles -->
<?php Dashboard::render( 'sections/advanced/styles.php', $args ); ?>
<!-- Cron Job -->
<?php Dashboard::render( 'sections/advanced/cronjob.php', $args ); ?>
<!-- WP CLI -->
<?php Dashboard::render( 'sections/advanced/wp-cli.php', $args ); ?>
<!-- Import & Export -->
<?php Dashboard::render( 'sections/advanced/import-export.php', $args ); ?>
</div>
</div>
<div class="tools-sidebar">
<?php Dashboard::render( 'partials/sidebar.php', $args ); ?>
</div>
</div>
</div>
<input type="hidden" name="save_settings">
</form>
</div>
</div>
</div>

View File

@@ -0,0 +1,12 @@
<div class="wizard-header">
<div class="wizard-title">
<?php echo esc_html__( 'Google XML Sitemaps Generator Wizard', 'xml-sitemap-generator-for-google' ) ?>
</div>
<div class="wizard-top-info">
<div class="pro-badge">
<a href="<?php echo esc_url( sgg_get_pro_url( 'wizard-header' ) ); ?>" target="_blank"><?php esc_html_e( 'Upgrade', 'xml-sitemap-generator-for-google' ); ?></a>
</div>
<span>|</span>
<a href="<?php echo esc_url( admin_url( 'options-general.php?page=' . \GRIM_SG\Dashboard::$slug ) ); ?>" class="wizard-close-btn">&#x2715;</a>
</div>
</div>

View File

@@ -0,0 +1,152 @@
<?php
/**
* @var array $args
*/
use GRIM_SG\Dashboard;
$settings = $args['settings'];
Dashboard::render( 'wizard/header.php' );
?>
<div class="wizard-main-wrapper">
<div class="wizard-form-wrapper">
<form id="wizard-form" action="" method="POST">
<?php wp_nonce_field( 'sgg_wizard_nonce', 'sgg_wizard_nonce' ); ?>
<div class="wizard-steps">
<ul>
<li class="wizard-step-menu-1 active">
<span>1</span>
<?php echo esc_html__( 'General', 'xml-sitemap-generator-for-google' ); ?>
</li>
<li class="wizard-step-menu-2">
<span>2</span>
<?php echo esc_html__( 'Sitemap Structure', 'xml-sitemap-generator-for-google' ); ?>
</li>
<li class="wizard-step-menu-3">
<span>3</span>
<?php echo esc_html__( 'Advanced', 'xml-sitemap-generator-for-google' ); ?>
</li>
</ul>
</div>
<div class="wizard-form-step-1 active">
<?php
Dashboard::render(
'wizard/sitemap-toggle.php',
array(
'title' => esc_html__( 'XML Sitemap', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( "XML Sitemap is a structured list of your website's URLs designed to help Search Engines efficiently index your site's content.", 'xml-sitemap-generator-for-google' ),
'name' => 'enable_sitemap',
'checked' => $settings->enable_sitemap ?? true,
)
);
Dashboard::render(
'wizard/sitemap-toggle.php',
array(
'title' => esc_html__( 'HTML Sitemap', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( "HTML Sitemap is a collection of your websites URLs created to assist Users in navigating through your sites content.", 'xml-sitemap-generator-for-google' ),
'name' => 'enable_html_sitemap',
'checked' => $settings->enable_html_sitemap ?? true,
'is_pro' => true,
)
);
Dashboard::render(
'wizard/sitemap-toggle.php',
array(
'title' => esc_html__( 'Google News', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( "Google News Sitemap is a structured list of your Post's URLs designed to help Google News efficiently index your site's news.", 'xml-sitemap-generator-for-google' ),
'name' => 'enable_google_news',
'checked' => $settings->enable_google_news ?? false,
)
);
Dashboard::render(
'wizard/sitemap-toggle.php',
array(
'title' => esc_html__( 'Image Sitemap', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( "Image Sitemap is a detailed list of image URLs from your website's content, specifically designed to help Search Engines effectively index your site's images, enhancing their visibility in search results.", 'xml-sitemap-generator-for-google' ),
'name' => 'enable_image_sitemap',
'checked' => $settings->enable_image_sitemap ?? false,
)
);
Dashboard::render(
'wizard/sitemap-toggle.php',
array(
'title' => esc_html__( 'Video Sitemap', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( "Video Sitemap is a structured list of video URLs from your website's content, specifically designed to help Search Engines effectively index your site's videos, enhancing their visibility in search results.", 'xml-sitemap-generator-for-google' ),
'name' => 'enable_video_sitemap',
'checked' => $settings->enable_video_sitemap ?? false,
)
);
?>
</div>
<div class="wizard-form-step-2">
<?php
Dashboard::render(
'wizard/sitemap-structure.php',
array(
'settings' => $settings,
)
);
?>
</div>
<div class="wizard-form-step-3">
<div class="sitemap-cache-toggle">
<?php
Dashboard::render(
'wizard/sitemap-toggle.php',
array(
'title' => esc_html__( 'Enable Sitemap Cache', 'xml-sitemap-generator-for-google' ),
'description' => esc_html__( 'Sitemap Cache improves the loading performance of your Sitemaps by storing links in the cache.', 'xml-sitemap-generator-for-google' ),
'name' => 'enable_cache',
'checked' => $settings->enable_cache ?? false,
)
);
?>
</div>
<div class="cache-timeout">
<label for="cache_timeout" class="form-label"><?php esc_html_e( 'Cache Expiration Time:', 'xml-sitemap-generator-for-google' ); ?></label>
<input type="number" id="cache_timeout" name="cache_timeout" class="sitemap-cache form-input" value="<?php echo esc_attr( $settings->cache_timeout ?? 24 ); ?>" <?php disabled( ! $settings->enable_cache ); ?>/>
<select name="cache_timeout_period" class="sitemap-cache form-select" <?php disabled( ! $settings->enable_cache ); ?>>
<option value="60" <?php selected( esc_attr( $settings->cache_timeout_period ?? 3600 ), 60 ); ?>><?php esc_html_e( 'minute(s)', 'xml-sitemap-generator-for-google' ); ?></option>
<option value="3600" <?php selected( esc_attr( $settings->cache_timeout_period ?? 3600 ), 3600 ); ?>><?php esc_html_e( 'hour(s)', 'xml-sitemap-generator-for-google' ); ?></option>
<option value="86400" <?php selected( esc_attr( $settings->cache_timeout_period ?? 3600 ), 86400 ); ?>><?php esc_html_e( 'day(s)', 'xml-sitemap-generator-for-google' ); ?></option>
</select>
</div>
<div class="pro-version-banner">
<img src="<?php echo esc_url( plugins_url( 'assets/images/pro-banner.png', GRIM_SG_FILE ) ); ?>" alt="<?php esc_attr_e( 'Pro Version', 'xml-sitemap-generator-for-google' ); ?>" class="pro-version-image">
<div class="pro-version-content">
<h3><?php esc_html_e( 'Upgrade to Pro', 'xml-sitemap-generator-for-google' ); ?></h3>
<p><?php esc_html_e( 'Unlock advanced features and enhance your sitemap with the Pro version.', 'xml-sitemap-generator-for-google' ); ?></p>
<a href="https://wpgrim.com/docs/google-xml-sitemaps-generator/general/settings/?utm_source=sgg-plugin&utm_medium=documentation&utm_campaign=wizard" class="pro-version-link" target="_blank"><?php esc_html_e( 'Documentation', 'xml-sitemap-generator-for-google' ); ?></a>
<a href="https://wpgrim.com/google-xml-sitemaps-generator-pro/?utm_source=sgg-plugin&utm_medium=get-now&utm_campaign=wizard" class="pro-version-btn" target="_blank"><?php esc_html_e( 'Get Pro Now', 'xml-sitemap-generator-for-google' ); ?></a>
</div>
</div>
</div>
<div class="wizard-form-btn-wrapper">
<div class="wizard-form-btn-wrapper">
<button class="grim-button white left-icon wizard-back-btn active">
<span><i class="grim-icon-arrow-left"></i>Back</span>
</button>
</div>
<div class="wizard-form-btn-wrapper">
<button class="grim-button secondary wizard-btn right-icon">
<span>Continue <i class="grim-icon-arrow-right"></i></span>
</button>
</div>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1,34 @@
<?php
/**
* @var $args
*/
$settings = $args['settings'] ?? new stdClass();
?>
<div class="sitemap-view-section-title">Sitemap Structure</div>
<div class="sitemap-view-section-desc">
<?php
printf(
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'
)
?>
</div>
<div class="wizard-sitemap-structure-view-section">
<label class="wizard-sitemap-structure-view-section-item sitemap-view-label sitemap-index" for="sitemap-index">
<input id="sitemap-index" 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><br>
<?php esc_html_e( 'will be generated with Inner Sitemaps', 'xml-sitemap-generator-for-google' ); ?>
</p>
</label>
<label class="wizard-sitemap-structure-view-section-item sitemap-view-label single-sitemap" for="single-sitemap">
<input id="single-sitemap" 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><br>
<?php esc_html_e( 'will be generated with all links', 'xml-sitemap-generator-for-google' ); ?>
</p>
</label>
</div>

View File

@@ -0,0 +1,34 @@
<?php
/**
* @var array $args
*/
$disabled = ! empty( $args['is_pro'] ) && ! sgg_pro_enabled();
?>
<div class="wizard-toggle-section <?php echo $disabled ? 'is_pro' : ''; ?>">
<div class="wizard-toggle-box">
<?php
if ( $disabled ) {
sgg_show_pro_badge();
}
?>
<div class="wizard-toggle-wrapper">
<div class="wizard-toggle-title">
<h3><?php echo esc_html( $args['title'] ); ?></h3>
<p class="description"><?php echo esc_html( $args['description'] ); ?></p>
</div>
<label class="toggle-switch">
<input type="checkbox" class="wizard-form-checkbox" name="<?php echo esc_html( $args['name'] ); ?>" value="1"
<?php checked( $args['checked'] ?? false ); ?> <?php disabled( $disabled ); ?>/>
<span class="toggle-switch-background">
<span class="toggle-switch-handle"></span>
</span>
</label>
</div>
<?php
if ( $disabled ) {
sgg_show_pro_overlay();
}
?>
</div>
</div>

View File

@@ -0,0 +1,125 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use GRIM_SG\Settings;
use GRIM_SG\Sitemap;
use GRIM_SG\GoogleNews;
use GRIM_SG\ImageSitemap;
use GRIM_SG\VideoSitemap;
$template = $args['template'] ?? 'sitemap';
$title = Sitemap::get_sitemap_title( $template );
$settings_obj = new Settings();
$settings = get_option( Sitemap::$slug, $settings_obj );
$hide_branding = $settings->hide_branding ?? true;
$sitemap_colors = apply_filters( 'sgg_sitemap_colors', $settings_obj->colors );
if ( sgg_pro_enabled() && ! empty( $settings->colors ) ) {
$sitemap_colors = $settings->colors;
}
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<xsl:stylesheet version="1.1"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo esc_html( $title ); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="robots" content="index,follow"/>
<style type="text/css">
body { font-family: 'Open Sans', Helvetica, Arial, sans-serif; font-size: 14px; margin: 0; text-align: center; }
a { text-decoration: none; color: <?php echo esc_attr( $sitemap_colors['sitemap_link_color'] ?? '#2d89c7' ); ?>; }
a:hover { border-bottom: 1px solid; }
.header { background-color: <?php echo esc_attr( $sitemap_colors['header_background_color'] ?? '#82a745' ); ?>; color: <?php echo esc_attr( $sitemap_colors['header_text_color'] ?? '#fff' ); ?>; padding: 30px 30px 20px; }
.header h1 { margin: 0; }
.header a, .footer a { border-bottom: 1px solid; color: inherit; }
.header a:hover, .footer a:hover { border-bottom: none; }
.footer { color: <?php echo esc_attr( $sitemap_colors['footer_text_color'] ?? '#666' ); ?>; font-size: 12px; margin-bottom: 30px; }
.top-content { margin: 10px auto -12px; }
.top-content a:hover { border-bottom: none; }
table { max-width: 1024px; margin: 20px auto; font-size: 12px; color: <?php echo esc_attr( $sitemap_colors['sitemap_text_color'] ?? '#444' ); ?>; }
table tr:first-child { background-color: #fff !important; }
table tr:nth-child(odd) { background-color: <?php echo esc_attr( $sitemap_colors['sitemap_background_color'] ?? '#ecf4db' ); ?>; }
table tr th, table tr td { padding: 10px 15px; text-align: left; }
table tr th { border-bottom: 1px solid #ccc; }
img { max-height: 100px; max-width: 100px; }
.image + .image { margin-top: 5px; }
.loc-item + .loc-item { margin-top: 5px; }
</style>
</head>
<body>
<div class="header">
<h1><?php echo esc_html( $title ); ?></h1>
<?php if ( ! sgg_pro_enabled() || ! $hide_branding ) : ?>
<?php if ( $template === GoogleNews::$template ) : ?>
<p>
<a href="https://developers.google.com/search/docs/crawling-indexing/sitemaps/news-sitemap" target="_blank">Google News Sitemap</a> is generated by
<a href="https://wordpress.org/plugins/xml-sitemap-generator-for-google/">Google XML Sitemaps Generator Plugin</a>
</p>
<p>Note that <strong>only posts from the last 48 hours</strong> will be processed by <a href="https://news.google.com" target="_blank">Google News</a>.</p>
<?php elseif ( $template === ImageSitemap::$template ) : ?>
<p>
<a href="https://developers.google.com/search/docs/crawling-indexing/sitemaps/image-sitemaps" target="_blank">Image Sitemap</a> is generated by
<a href="https://wordpress.org/plugins/xml-sitemap-generator-for-google/">Google XML Sitemaps Generator Plugin</a>
</p>
<?php elseif ( $template === VideoSitemap::$template ) : ?>
<p>
<a href="https://developers.google.com/search/docs/crawling-indexing/sitemaps/video-sitemaps" target="_blank">Video Sitemap</a> is generated by
<a href="https://wordpress.org/plugins/xml-sitemap-generator-for-google/">Google XML Sitemaps Generator Plugin</a>
</p>
<?php else : ?>
<p>XML Sitemap is generated by <a href="https://wordpress.org/plugins/xml-sitemap-generator-for-google/">Google XML Sitemaps Generator Plugin</a></p>
<p>You can get more information on <a href="https://wordpress.org/plugins/xml-sitemap-generator-for-google/">Plugin page</a>.</p>
<?php endif; ?>
<?php endif; ?>
</div>
<div class="top-content">
<?php
$is_media_sitemap = in_array( $template, array( ImageSitemap::$template, VideoSitemap::$template ), true );
if ( ( ! empty( $settings->sitemap_view ) && $is_media_sitemap ) || 'inner-sitemap' === $template ) {
$sitemap_type = isset( $args['is_xml'] ) && ! $args['is_xml'] ? 'html' : 'xml';
$sitemap_url = 'xml' === $sitemap_type ? $settings->sitemap_url : $settings->html_sitemap_url;
if ( $is_media_sitemap ) {
$sitemap_structure = get_option( "sgg_{$template}_structure" );
if ( 'multiple' === $sitemap_structure ) {
$sitemap_url = $template === ImageSitemap::$template ? $settings->image_sitemap_url : $settings->video_sitemap_url;
}
}
printf(
/* translators: Sitemap Index URL */
wp_kses_post( __( '<a href="%s">&#8592; Sitemap Index</a>', 'xml-sitemap-generator-for-google' ) ),
esc_url( sgg_get_sitemap_url( $sitemap_url, "sitemap_{$sitemap_type}" ) )
);
}
?>
</div>
<?php
Sitemap::get_sitemap_table(
$template,
array(
'settings' => $settings,
)
);
?>
<?php if ( ! sgg_pro_enabled() || ! $hide_branding ) : ?>
<div class="footer">Generated by <a href="https://wpgrim.com/">WP Grim</a> -
<a href="https://wordpress.org/plugins/xml-sitemap-generator-for-google/">Google XML Sitemaps Generator Plugin</a>
</div>
<?php endif; ?>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,52 @@
<table>
<tr>
<th>#</th>
<th>Title</th>
<th>Language</th>
<th>Keywords</th>
<th>Stocks</th>
<th>Publication Date</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="./sitemap:urlset/sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:variable name="url">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$url}">
<xsl:if test="news:news">
<xsl:value-of select="news:news/news:title"/>
</xsl:if>
<xsl:if test="not(news:news)">
<xsl:value-of select="sitemap:loc"/>
</xsl:if>
</a>
</td>
<td>
<xsl:value-of select="news:news/news:publication/news:language"/>
</td>
<td>
<xsl:value-of select="news:news/news:keywords"/>
</td>
<td>
<xsl:value-of select="news:news/news:stock_tickers"/>
</td>
<td>
<xsl:if test="news:news">
<xsl:value-of select="concat(substring(news:news/news:publication_date, 0, 11), concat(' ', substring(news:news/news:publication_date, 12, 5)))"/>
</xsl:if>
<xsl:if test="sitemap:lastmod">
<xsl:value-of select="concat(substring(sitemap:lastmod, 0, 11), concat(' ', substring(sitemap:lastmod, 12, 5)))"/>
</xsl:if>
</td>
</tr>
</xsl:for-each>
</table>

View File

@@ -0,0 +1,61 @@
<?php
/**
* @var $args array
*/
$settings = $args['settings'] ?? new stdClass();
?>
<table>
<tr>
<th>#</th>
<th>Page, Post, Custom Post URL</th>
<th>Image URLs</th>
<?php if ( ! ( $settings->hide_image_previews ?? false ) ) : ?>
<th>Images</th>
<?php endif; ?>
</tr>
<xsl:for-each select="./sitemap:urlset/sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:variable name="url">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$url}" target="_blank">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:for-each select="image:image">
<xsl:variable name='imageURL'>
<xsl:value-of select='image:loc'/>
</xsl:variable>
<div>
<a href='{$imageURL}'>
<xsl:value-of select='image:loc'/>
</a>
</div>
</xsl:for-each>
</td>
<?php if ( ! ( $settings->hide_image_previews ?? false ) ) : ?>
<td>
<xsl:for-each select="image:image">
<xsl:variable name='imageURL'>
<xsl:value-of select='image:loc'/>
</xsl:variable>
<div class="image">
<a href='{$imageURL}' class="thumbnail">
<img src='{$imageURL}'/>
</a>
</div>
</xsl:for-each>
</td>
<?php endif; ?>
</tr>
</xsl:for-each>
</table>

View File

@@ -0,0 +1,26 @@
<table>
<tr>
<th>Sitemap</th>
<th>Last Modified</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="./sitemap:sitemapindex/sitemap:sitemap">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="page">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$page}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod, 0, 11), concat(' ', substring(sitemap:lastmod, 12, 5)))"/>
</td>
</tr>
</xsl:for-each>
</table>

View File

@@ -0,0 +1,34 @@
<table>
<tr>
<th>Page URL</th>
<th>Priority</th>
<th>Frequency</th>
<th>Last Modified</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="./sitemap:urlset/sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="page">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a target="_blank" href="{$page}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="sitemap:priority"/>
</td>
<td>
<xsl:value-of select="sitemap:changefreq"/>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod, 0, 11), concat(' ', substring(sitemap:lastmod, 12, 5)))"/>
</td>
</tr>
</xsl:for-each>
</table>

View File

@@ -0,0 +1,66 @@
<table>
<tr>
<th>#</th>
<th>Page, Post, Custom Post URL</th>
<th>Thumbnail</th>
<th>Video</th>
<th>Description</th>
<th>Duration</th>
</tr>
<xsl:for-each select="./sitemap:urlset/sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:variable name="url">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$url}" target="_blank">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:for-each select="video:video">
<xsl:variable name='thumbURL'>
<xsl:value-of select='video:thumbnail_loc'/>
</xsl:variable>
<div class="loc-item">
<a href='{$thumbURL}' class="thumbnail">
<img src='{$thumbURL}'/>
</a>
</div>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="video:video">
<xsl:variable name='videoURL'>
<xsl:value-of select='video:player_loc'/>
</xsl:variable>
<div class="loc-item">
<a href='{$videoURL}'>
<xsl:value-of select='video:title'/>
</a>
</div>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="video:video">
<div class="loc-item">
<xsl:value-of select='video:description'/>
</div>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="video:video">
<div class="loc-item">
<xsl:value-of select='video:duration'/>
</div>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>