Plugin Directory

Changeset 3366420


Ignore:
Timestamp:
09/23/2025 11:26:47 AM (6 months ago)
Author:
bestwebsoft
Message:

"V3.3.5 - * The compatibility with new WordPress version updated. "

Location:
google-sitemap-plugin
Files:
235 added
12 edited

Legend:

Unmodified
Added
Removed
  • google-sitemap-plugin/trunk/bws_menu/bws_functions.php

    r3184465 r3366420  
    22/**
    33 * @package BWS Menu
    4  * @version 2.4.3
     4 * @version 2.4.4
    55 * Main functions
    66 */
     
    233233     */
    234234    function bws_admin_notices() {
    235         global $bws_versions_notice_array, $bws_plugin_banner_to_settings, $bstwbsftwppdtplgns_options, $bws_plugin_banner_go_pro, $bstwbsftwppdtplgns_banner_array, $bws_plugin_banner_timeout, $bws_plugin_banner_to_promo;
     235        global $bws_versions_notice_array, $bws_plugin_banner_to_settings, $bstwbsftwppdtplgns_options, $bws_plugin_banner_go_pro, $bstwbsftwppdtplgns_banner_array, $bws_plugin_banner_timeout;
    236236
    237237        /* bws_plugin_banner_go_pro */
     
    367367        }
    368368
    369         /*  banner_to_setting_promo */
    370         if ( ! empty( $bws_plugin_banner_to_promo ) ) {
    371             $key = rand( 0, count( $bws_plugin_banner_to_promo ) - 1 );
    372             ?>
    373             <div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
    374                 <div class="bws_banner_on_plugin_page bws_banner_to_settings">
    375                     <div class="icon">
    376                         <img title="" src="<?php echo esc_url( $bws_plugin_banner_to_promo[$key]['banner_url'] ); ?>" alt="" />
    377                     </div>
    378                     <div class="text">
    379                         <strong><?php echo esc_html( $bws_plugin_banner_to_promo[$key]['message'][0] ); ?></strong>
    380                         <br />
    381                         <?php echo esc_html( $bws_plugin_banner_to_promo[$key]['message'][1] ); ?>
    382                     </div>
    383                     <div class="button_div">
    384                         <a class="button" href="<?php echo esc_url( self_admin_url( $bws_plugin_banner_to_promo[$key]['settings_url'] ) ); ?>"><?php esc_html_e( 'Go to Settings', 'bestwebsoft' ); ?></a>
    385                     </div>
    386                     <form action="" method="post">
    387                         <button class="notice-dismiss bws_hide_promo_notice" title="<?php esc_html_e( 'Close notice', 'bestwebsoft' ); ?>"></button>
    388                         <input type="hidden" name="bws_hide_settings_promo_notice_<?php echo esc_html( $bws_plugin_banner_to_promo[$key]['plugin_options_name'] ); ?>" value="hide" />
    389                         <?php wp_nonce_field( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ); ?>
    390                     </form>
    391                 </div>
    392             </div>
    393             <?php
    394         }
    395 
    396369        /**
    397370         * Show notices about deprecated_function
     
    455428
    456429        if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    457             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     430            $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    458431        }
    459432
     
    489462
    490463            if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    491                 $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     464                $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    492465            }
    493466
     
    535508
    536509        if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    537             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     510            $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    538511        }
    539512
     
    543516            'banner_url'          => $banner_url_or_slug,
    544517            'settings_url'        => $settings_url,
    545             'post_type_url'       => $post_type_url,
    546         );
    547     }
    548 }
    549 
    550 if ( ! function_exists( 'bws_plugin_banner_to_promo' ) ) {
    551     /**
    552      * Function settings for banner
    553      *
    554      * @param array $plugin_info              Plugin info.
    555      * @param array $plugin_options_name      Plugin option name.
    556      * @param array $banner_url_or_slug       Url or slug for icon.
    557      * @param array $settings_url             Url for settings.
    558      * @param array $post_type_url (Optional) Url for banner.
    559      * @return global array
    560      */
    561     function bws_plugin_banner_to_promo( $plugin_info, $plugin_options_name, $banner_url_or_slug, $settings_url, $message = array(), $post_type_url = false ) {
    562         global $bws_plugin_banner_to_promo;
    563 
    564         $is_network_admin = is_network_admin();
    565 
    566         $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
    567 
    568         if ( isset( $plugin_options['display_promo_time'] ) && $plugin_options['display_promo_time'] + 604800000 < time() ) {
    569             $plugin_options['display_promo_notice'] = 1;
    570             if ( $is_network_admin ) {
    571                 update_site_option( $plugin_options_name, $plugin_options );
    572             } else {
    573                 update_option( $plugin_options_name, $plugin_options );
    574             }
    575         }
    576 
    577         if ( isset( $plugin_options['display_promo_notice'] ) && 0 === $plugin_options['display_promo_notice'] ) {
    578             return;
    579         }
    580 
    581         if ( isset( $_POST[ 'bws_hide_settings_promo_notice_' . $plugin_options_name ] ) && check_admin_referer( plugin_basename( __FILE__ ), 'bws_settings_nonce_name' ) ) {
    582             $plugin_options['display_promo_notice'] = 0;
    583             $plugin_options['display_promo_time'] = time();
    584             if ( $is_network_admin ) {
    585                 update_site_option( $plugin_options_name, $plugin_options );
    586             } else {
    587                 update_option( $plugin_options_name, $plugin_options );
    588             }
    589             return;
    590         }
    591 
    592         if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    593             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
    594         }
    595 
    596         $bws_plugin_banner_to_promo[] = array(
    597             'plugin_info'         => $plugin_info,
    598             'plugin_options_name' => $plugin_options_name,
    599             'banner_url'          => $banner_url_or_slug,
    600             'settings_url'        => $settings_url,
    601             'message'             => $message,
    602518            'post_type_url'       => $post_type_url,
    603519        );
     
    664580
    665581        if ( false === strrpos( $banner_url_or_slug, '/' ) ) {
    666             $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.gif';
     582            $banner_url_or_slug = '//ps.w.org/' . $banner_url_or_slug . '/assets/icon-256x256.png';
    667583        }
    668584        ?>
     
    685601        </div>
    686602        <?php
    687     }
    688 }
    689 
    690 if ( ! function_exists( 'bws_plugin_promo_banner' ) ) {
    691     /**
    692      * Function display for feature banner
    693      *
    694      * @param array $plugin_info              Plugin info.
    695      * @param array $plugin_options_name      Plugin option name.
    696      * @param array $banner_url_or_slug       Url or slug for icon.
    697      * @echo string
    698      */
    699     function bws_plugin_promo_banner( $plugin_info, $plugin_options_name, $banner_url_or_slug, $plugin_url ) {
    700         $is_network_admin = is_network_admin();
    701 
    702         $promo_plugins = array( 'google-captcha', 'contact-form-plugin' );
    703 
    704         $plugin_options = $is_network_admin ? get_site_option( $plugin_options_name ) : get_option( $plugin_options_name );
    705 
    706         if ( in_array( $banner_url_or_slug, $promo_plugins ) ) {
    707             if ( isset( $plugin_options['display_promo_banner_time'] ) && $plugin_options['display_promo_banner_time'] + 604800000 < time() ) {
    708                 $plugin_options['display_promo_banner'] = 1;
    709                 if ( $is_network_admin ) {
    710                     update_site_option( $plugin_options_name, $plugin_options );
    711                 } else {
    712                     update_option( $plugin_options_name, $plugin_options );
    713                 }
    714             }
    715             if ( isset( $plugin_options['display_promo_banner'] ) && 0 === $plugin_options['display_promo_banner'] ) {
    716                 return;
    717             }
    718 
    719             if ( isset( $_POST[ 'bws_hide_promo_banner_' . $plugin_options_name ] ) && check_admin_referer( $plugin_info['Name'], 'bws_settings_nonce_name' ) ) {
    720                 $plugin_options['display_promo_banner'] = 0;
    721                 $plugin_options['display_promo_banner_time'] = time();
    722                 if ( $is_network_admin ) {
    723                     update_site_option( $plugin_options_name, $plugin_options );
    724                 } else {
    725                     update_option( $plugin_options_name, $plugin_options );
    726                 }
    727                 return;
    728             }
    729             ?>
    730             <div style="padding: 0; margin: 0; border: none; background: none; position: relative;">
    731                 <div class="bws_banner_on_plugin_page bws_promo_banner">
    732                     <div class="promo-banner-left">
    733                         <div class="promo-banner-upgrade"><?php esc_html_e( 'Upgrade to pro', 'bestwebsoft' ); ?></div>
    734                         <div class="promo-banner-off"><?php esc_html_e( '30% OFF', 'bestwebsoft' ); ?></div>
    735                     </div>
    736                     <div class="promo-banner-text">
    737                         <div class="promo-banner-text-top"><?php esc_html_e( 'Get exclusive Pro features and premium support.', 'bestwebsoft' ); ?></div>
    738                         <div class="promo-banner-text-bottom"><?php printf( '%s <span>%s</span> %s', esc_html__( 'Use', 'bestwebsoft' ), esc_html__( 'UPGRADE', 'bestwebsoft' ), esc_html__( 'promo code for instant savings!', 'bestwebsoft' ) ); ?></div>
    739                     </div>
    740                     <div class="promo-banner-get-pro"><?php esc_html_e( 'Get PRO NOW', 'bestwebsoft' ); ?></div>
    741                 </div>
    742                 <a href="<?php echo esc_url( $plugin_url ); ?>" class="promo-banner-link"></a>
    743                 <form action="" method="post">
    744                     <button class="notice-dismiss bws_hide_settings_notice bws_hide_promo_notice" title="Close notice"></button>
    745                     <input type="hidden" name="bws_hide_promo_banner_gglcptch_options" value="hide">
    746                     <?php wp_nonce_field( $plugin_info['Name'], 'bws_settings_nonce_name' ); ?>
    747                 </form>
    748             </div>
    749             <?php
    750         }
    751603    }
    752604}
  • google-sitemap-plugin/trunk/bws_menu/bws_menu.php

    r3015189 r3366420  
    66/**
    77 * Function for displaying BestWebSoft menu
    8  * Version: 2.4.3
     8 * Version: 2.4.4
    99 */
    1010if ( ! function_exists( 'bws_admin_enqueue_scripts' ) ) {
  • google-sitemap-plugin/trunk/bws_menu/css/general_style.css

    r3184465 r3366420  
    535535    -webkit-box-shadow: 0 0 3px #555;
    536536    -moz-box-shadow: 0 0 3px #555;
    537     max-width: 300px;
    538     position: absolute;
    539     z-index: 2;
    540537}
    541538.bws-tooltip-content a {
     
    912909    }
    913910}
    914 /* Promo banner */
    915 .bws_promo_banner {
    916     background: radial-gradient(74% 10281.6% at 33.47% 26%, rgba(64, 128, 255, 0.92) 0%, #566fef 100%);
    917     text-align: center;
    918     display: flex;
    919     color: #fff;
    920     padding: 23px 75px 20px;
    921     justify-content: space-between;
    922     align-items: center;
    923 }
    924 .promo-banner-left {
    925     display: flex;
    926 }
    927 .promo-banner-upgrade {
    928     font-size: 48px;
    929     position: relative;
    930     padding-right: 30px;
    931     text-transform: uppercase;
    932     font-weight: 700;
    933     line-height: 36px;
    934 }
    935 .promo-banner-upgrade:after{
    936     display: table;
    937     position: absolute;
    938     width: 4px;
    939     height: 42px;
    940     background-color: #fff;
    941     content: '';
    942     right: 0;
    943     top: 0;
    944 }
    945 .promo-banner-off {
    946     position: relative;
    947     font-size: 30px;
    948     background-color: #ffbb01;
    949     padding: 18px 10px 20px;
    950     margin-left: 30px;
    951     margin-top: -4px;
    952     font-weight: 700;
    953 }
    954 .promo-banner-text {
    955     font-size: 22px;
    956     line-height: 26px;
    957 }
    958 .promo-banner-text-bottom span {
    959     color: #ffbb01;
    960 }
    961 .promo-banner-get-pro {
    962     border: 3px solid #ffc411f7;
    963     font-size: 27px;
    964     padding: 1px 15px 5px;
    965     line-height: 29px;
    966     font-weight: 600;
    967 }
    968 .bws_hide_promo_notice::before {
    969     color: #fff;
    970 }
    971 .promo-banner-link {
    972     position: absolute;
    973     left: 0;
    974     right: 0;
    975     top: 0;
    976     bottom: 0;
    977 }
    978 @media screen and (max-width: 1700px) {
    979     .bws_promo_banner {
    980         padding: 23px 25px 20px;
    981     }
    982 }
    983 @media screen and (max-width: 1580px) {
    984     .bws_promo_banner {
    985         flex-wrap: wrap;
    986     }
    987     .promo-banner-left {
    988         width: 100%;
    989         justify-content: center;
    990         padding-bottom: 15px;
    991     }
    992 }
    993 @media screen and (max-width: 835px) {
    994     .bws_promo_banner {
    995         justify-content: center;
    996     }
    997     .promo-banner-text {
    998         width: 100%;
    999     }
    1000 }
    1001 @media screen and (max-width: 835px) {
    1002     .bws_promo_banner {
    1003         justify-content: center;
    1004     }
    1005     .promo-banner-left {
    1006         padding-bottom: 10px;
    1007     }
    1008     .promo-banner-text {
    1009         width: 100%;
    1010         padding-bottom: 15px;
    1011     }
    1012 }
    1013 @media screen and (max-width: 768px) {
    1014     .promo-banner-upgrade {
    1015         font-size: 34px;
    1016     }
    1017     .promo-banner-upgrade:after {
    1018         padding-right: 10px;
    1019         display: none;
    1020     }
    1021     .promo-banner-off {
    1022         padding: 10px;
    1023         margin-top: 0;
    1024         margin-left: 0;
    1025         font-size: 28px;
    1026     }
    1027 }
    1028 @media screen and (max-width: 560px) {
    1029     .promo-banner-upgrade {
    1030         letter-spacing: -1px;
    1031         padding-right: 10px;
    1032         font-size: 28px;
    1033     }
    1034     .promo-banner-text-top {
    1035         display: none;
    1036     }
    1037     .promo-banner-text-bottom {
    1038         font-size: 16px;
    1039     }
    1040     .promo-banner-off {
    1041         font-size: 24px;
    1042     }
    1043     .promo-banner-get-pro {
    1044         font-size: 18px;
    1045     }
    1046 }
    1047 @media screen and (max-width: 450px) {
    1048     .bws_promo_banner {
    1049         padding: 14px 10px;
    1050     }
    1051     .promo-banner-upgrade {
    1052         font-size: 24px;
    1053     }
    1054     .promo-banner-off {
    1055         font-size: 20px;
    1056     }
    1057     .promo-banner-get-pro {
    1058         font-size: 16px;
    1059     }
    1060 }
    1061 @media screen and (max-width: 365px) {
    1062     .promo-banner-left {
    1063         display: block;
    1064         text-align: center;
    1065     }
    1066     .promo-banner-upgrade {
    1067         padding-bottom: 10px;
    1068     }
    1069     .promo-banner-get-pro {
    1070         width: 100%;
    1071     }
    1072 }
  • google-sitemap-plugin/trunk/bws_menu/fonts/bwsicons.svg

    r3184465 r3366420  
    66<![CDATA[
    77{
    8     "fontFamily": "bwsicons",
     8    "fontFamily": "icomoon",
    99    "majorVersion": 1,
    1010    "minorVersion": 0,
    1111    "version": "Version 1.0",
    12     "fontId": "bwsicons",
    13     "psName": "bwsicons",
     12    "fontId": "icomoon",
     13    "psName": "icomoon",
    1414    "subFamily": "Regular",
    15     "fullName": "bwsicons",
     15    "fullName": "icomoon",
    1616    "description": "Font generated by IcoMoon."
    1717}
     
    2020</metadata>
    2121<defs>
    22 <font id="bwsicons" horiz-adv-x="1024">
     22<font id="icomoon" horiz-adv-x="1024">
    2323<font-face units-per-em="1024" ascent="960" descent="-64" />
    2424<missing-glyph horiz-adv-x="1024" />
     
    8686<glyph unicode="&#xe992;" glyph-name="Columns" data-tags="Columns" d="M249.6 817.2v-738.4h-128v738.4h128zM467.2 817.2v-738.4h-128v738.4h128zM684.8 817.2v-738.4h-128v738.4h128zM902.4 817.2v-738.4h-128v738.4h128z" />
    8787<glyph unicode="&#xe993;" glyph-name="GPTAi" data-tags="GPT Ai" d="M409.919 184.994l329.81-142.572h-659.627l329.81 142.572zM409.919 737.754l400.483-702.805-400.483 173.731-400.483-173.731 400.483 702.805zM809.819 784.196l102.953 103.537 101.792-102.365-102.953-103.537-101.792 102.365zM810.403 753.518l102.088-97.994 102.088 97.994v-718.601h-204.17v718.601z" />
    88 <glyph unicode="&#xe994;" glyph-name="AdBock-Detector" data-tags="AdBock Detector" d="M463.97 833.512c-12.177-12.091-17.25-21.663-17.25-32.747v-15.114l-25.368 3.023c-28.92 3.527-45.156-4.534-60.884-30.228-9.133-14.61-10.148-25.693-10.148-118.392v-102.774l-17.25 10.58c-23.847 14.61-41.605 13.602-59.362-4.534l-15.221-15.114 1.522-134.514c2.537-151.641 4.566-163.731 39.068-216.631 23.846-36.779 60.884-67.007 100.459-82.621 26.89-10.583 39.068-12.094 137.499-13.605 105.532-1.511 108.067-1.511 134.452 10.578 30.949 14.107 55.808 37.282 71.029 65.998 11.165 20.152 11.165 25.192 12.686 272.553 1.014 165.246 0 257.944-3.554 270.035-3.042 9.572-11.16 23.175-18.77 30.228-10.653 10.076-17.756 12.091-42.62 11.587l-29.428-0.504-2.535 25.189c-2.028 20.656-5.075 28.213-18.775 40.304-15.221 13.602-19.277 14.61-44.648 12.595-26.887-2.519-29.428-1.511-45.155 14.61-14.714 14.61-20.291 16.625-42.615 16.625-22.834 0-27.907-2.015-43.129-17.129zM524.855 814.871l13.193-10.076 1.014-152.146 1.521-152.146h25.366l2.54 138.543c1.521 76.073 4.563 141.567 6.596 145.093 7.103 10.076 43.127 7.557 49.212-3.527 3.047-6.046 5.075-63.982 5.075-153.657 0-78.592 1.521-146.604 3.042-151.139 3.554-8.564 19.789-11.084 24.864-3.526 1.521 2.519 3.042 46.349 3.042 97.232 0 97.233 4.061 133.506 15.221 140.559 13.193 8.565 37.038 3.023 43.634-10.58 8.117-15.618 9.639-486.162 1.521-513.87-6.596-23.681-31.963-53.402-56.822-65.998-18.775-9.574-27.399-10.076-127.354-8.565-97.92 1.511-109.589 3.022-131.914 12.596-52.259 24.183-95.386 79.599-110.099 142.068-7.103 28.717-9.133 246.861-2.537 256.937 8.625 14.61 37.546-4.030 52.766-33.25 3.044-6.046 5.581-37.279 5.581-73.049 0-65.496 3.044-76.576 18.265-73.554 9.133 1.511 9.64 11.080 12.177 202.021 2.537 191.442 3.044 201.014 12.177 208.067 12.684 9.068 28.92 9.068 41.604 0 9.133-6.549 9.64-15.114 11.162-136.529 1.522-111.842 2.537-129.475 9.64-131.994 19.28-7.557 21.31 8.564 21.817 168.771 0 84.134 1.522 155.673 3.044 158.192 3.044 4.534 20.297 13.099 27.907 13.603 2.028 0.504 9.131-4.030 16.742-10.076zM463.761 714.725c-100.293-22.541-179.13-97.678-204.578-195.356-9.98-39.071-9.48-108.7 0.499-143.263 8.981-30.556 28.94-72.629 40.916-86.155 6.986-8.013 6.986-9.519 0-16.528-6.486-6.512-9.98-7.014-18.961-2.003-10.479 5.508-17.464 0-109.275-92.17l-97.798-98.18v-25.043c0-21.539 2.495-27.051 16.466-41.074 13.971-14.028 19.46-16.533 40.916-16.533h24.948l97.798 98.18c86.821 87.159 97.299 99.179 92.31 108.196-3.992 7.516-3.493 12.522 1.497 19.536 6.486 8.515 7.983 9.017 16.466 1.501 13.472-12.522 55.385-32.559 85.823-41.571 34.429-10.021 103.788-10.523 142.705-0.502 94.805 25.043 171.147 104.692 194.6 203.368 45.404 194.355-129.735 371.177-324.332 327.598zM585.012 682.667c45.404-12.022 76.343-30.055 110.771-65.62 59.874-61.111 81.831-140.756 62.37-224.909-20.455-87.159-91.812-159.292-179.627-181.333-13.471-3.504-43.411-5.006-71.854-3.504-42.911 2.003-52.89 4.509-86.321 20.54-51.893 25.043-91.811 65.118-116.759 117.213-17.464 35.562-18.961 43.078-20.957 91.663-1.497 44.583-0.499 57.607 8.982 85.157 41.913 125.228 167.155 194.354 293.396 160.793zM326.045 243.364c-2.994-3.504-7.485-5.508-10.478-4.007-2.495 1.506-1.996 6.010 1.497 10.021 2.994 3.504 7.485 5.508 10.479 4.007 2.494-1.506 1.996-6.010-1.497-10.021zM323.525 914.532h391.863l277.216-273.236v-386.593l-277.216-273.234h-391.863l-277.215 273.234v386.593l277.215 273.236zM333.716 889.677l-262.551-258.782v-365.794l262.55-258.779h371.483l262.552 258.779v365.794l-262.552 258.782h-371.482z" />
    8988</font></defs></svg>
  • google-sitemap-plugin/trunk/bws_menu/product_list.php

    r3184465 r3366420  
    1919    'security'    => array( 'name' => __( 'Security', 'bestwebsoft' ) ),
    2020    'seo'         => array( 'name' => __( 'SEO', 'bestwebsoft' ) ),
    21     'smm'         => array( 'name' => __( 'SMM', 'bestwebsoft' ) ),
    2221);
    2322
     
    4544        'pro_settings' => 'admin.php?page=captcha_pro.php',
    4645    ),
    47     'bws-car-rental/bws-car-rental.php'                 => array(
    48         'category'     => array( 'ecommerce' ),
    49         'name'         => 'Car Rental V2',
    50         'description'  => __( 'Create your own rental website for car renting and booking.', 'bestwebsoft' ),
    51         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/?k=ca43df54beefae7128a7005bce0ec651&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    52         'settings'     => 'admin.php?page=bws-car-rental-settings',
    53         'pro_version'  => 'bws-car-rental-pro/bws-car-rental-pro.php',
    54         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/buy/?k=63cac1b736047a3f5a2f5a7c5336f3c4&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    55         'pro_settings' => 'edit.php?post_type=bws_bkng_products&page=bws-car-rental-pro-settings',
    56         'icon'         => '//ps.w.org/car-rental/assets/icon-128x128.png',
    57         'install_url'  => 'https://bestwebsoft.com/products/wordpress/plugins/car-rental-v2/',
    58     ),
    59     'columns-bws/columns-bws.php'                       => array(
    60         'category'    => array( 'content' ),
    61         'name'        => 'Columns',
    62         'description' => __( 'Add columns with custom content to WordPress website pages, posts, widgets, etc.', 'bestwebsoft' ),
    63         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/columns/?k=6d2cddc059a04e4d528cec14de47fb1e&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    64         'settings'    => 'admin.php?page=columns-settings.php',
    65     ),
    6646    'contact-form-plugin/contact_form.php'              => array(
    6747        'category'     => array( 'marketing', 'recommended' ),
     
    7454        'pro_settings' => 'admin.php?page=contact_form_pro.php',
    7555    ),
    76     'contact-form-multi/contact-form-multi.php'         => array(
    77         'category'     => array( 'marketing', 'recommended' ),
    78         'name'         => 'Contact Form Multi',
    79         'description'  => __( 'Add unlimited number of contact forms to WordPress website.', 'bestwebsoft' ),
    80         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/?k=83cdd9e72a9f4061122ad28a67293c72&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    81         'settings'     => '',
    82         'pro_version'  => 'contact-form-multi-pro/contact-form-multi-pro.php',
    83         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-multi/buy/?k=fde3a18581c143654f060c398b07e8ac&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    84         'pro_settings' => '',
    85     ),
    86     'contact-form-to-db/contact_form_to_db.php'         => array(
    87         'category'     => array( 'admin-tools', 'recommended' ),
    88         'name'         => 'Contact Form to DB',
    89         'description'  => __( 'Save and manage Contact Form messages. Never lose important data.', 'bestwebsoft' ),
    90         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/?k=ba3747d317c2692e4136ca096a8989d6&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    91         'settings'     => 'admin.php?page=contact_form_to_db.php',
    92         'pro_version'  => 'contact-form-to-db-pro/contact_form_to_db_pro.php',
    93         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/contact-form-to-db/buy/?k=6ce5f4a9006ec906e4db643669246c6a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    94         'pro_settings' => 'admin.php?page=contact_form_to_db_pro.php',
    95     ),
    96     'custom-admin-page/custom-admin-page.php'           => array(
    97         'category'     => array( 'admin-tools' ),
    98         'name'         => 'Custom Admin Page',
    99         'description'  => __( 'Add unlimited custom pages to WordPress admin dashboard.', 'bestwebsoft' ),
    100         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/?k=9ac03f16c25e845e8e055a221c3e1467&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    101         'settings'     => 'edit.php?post_type=bws-admin_page&page=custom-admin-page.php',
    102         'pro_version'  => 'custom-admin-page-pro/custom-admin-page-pro.php',
    103         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/custom-admin-page/buy/?k=b986f456dba092b537f1a7755a363be9&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    104         'pro_settings' => 'edit.php?post_type=bws-admin_page&page=custom-admin-page-pro.php',
    105     ),
    10656    'custom-search-plugin/custom-search-plugin.php'     => array(
    10757        'category'     => array( 'navigation' ),
     
    11464        'pro_settings' => 'admin.php?page=custom_search_pro.php',
    11565    ),
    116     'donate-button/donate.php'                          => array(
    117         'category'    => array( 'ecommerce' ),
    118         'name'        => 'Donate',
    119         'description' => __( 'Add PayPal and 2CO donate buttons to receive charity payments.', 'bestwebsoft' ),
    120         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/donate/?k=a8b2e2a56914fb1765dd20297c26401b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    121         'settings'    => 'admin.php?page=donate.php',
    122     ),
    12366    'error-log-viewer/error-log-viewer.php'             => array(
    12467        'category'    => array( 'admin-tools' ),
     
    12770        'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/error-log-viewer/?k=da0de8bd2c7a0b2fea5df64d55a368b3&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    12871        'settings'    => 'admin.php?page=rrrlgvwr.php&tab=settings',
    129     ),
    130     'facebook-button-plugin/facebook-button-plugin.php' => array(
    131         'category'     => array( 'smm' ),
    132         'name'         => 'Like & Share',
    133         'description'  => __( 'Add Facebook Follow, Like, and Share buttons to WordPress posts, pages, and widgets.', 'bestwebsoft' ),
    134         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/?k=05ec4f12327f55848335802581467d55&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    135         'settings'     => 'admin.php?page=facebook-button-plugin.php',
    136         'pro_version'  => 'facebook-button-pro/facebook-button-pro.php',
    137         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/facebook-like-button/buy/?k=8da168e60a831cfb3525417c333ad275&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    138         'pro_settings' => 'admin.php?page=facebook-button-pro.php',
    13972    ),
    14073    'gallery-plugin/gallery-plugin.php'                 => array(
     
    15891        'pro_settings' => 'admin.php?page=google-2-step-verification-pro.php',
    15992    ),
    160     'bws-adsense/bws-adsense.php'                       => array(
    161         'category'     => array( 'marketing' ),
    162         'name'         => 'AdS',
    163         'description'  => __( 'Add Adsense ads to WordPress website pages, posts, custom posts, search results, categories, tags, and widgets.', 'bestwebsoft' ),
    164         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/?k=9d719e415eee289845b00843e8847bc9&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    165         'settings'     => 'admin.php?page=bws-adsense.php',
    166         'pro_version'  => 'adsense-pro/adsense-pro.php',
    167         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/google-adsense/buy/?k=60e3979921e354feb0347e88e7d7b73d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    168         'pro_settings' => 'admin.php?page=adsense-pro.php',
    169     ),
    170     'bws-google-analytics/bws-google-analytics.php'     => array(
    171         'category'     => array( 'admin-tools' ),
    172         'name'         => 'Analytics',
    173         'description'  => __( 'Add Google Analytics code to WordPress website and track basic stats.', 'bestwebsoft' ),
    174         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/?k=261c74cad753fb279cdf5a5db63fbd43&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    175         'settings'     => 'admin.php?page=bws-google-analytics.php',
    176         'pro_version'  => 'bws-google-analytics-pro/bws-google-analytics-pro.php',
    177         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-analytics/buy/?k=83796e84fec3f70ecfcc8894a73a6c4a&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    178         'pro_settings' => 'admin.php?page=bws-google-analytics-pro.php',
    179     ),
    18093    'google-captcha/google-captcha.php'                 => array(
    18194        'category'     => array( 'security', 'recommended' ),
     
    188101        'pro_settings' => 'admin.php?page=google-captcha-pro.php',
    189102    ),
    190     'bws-google-maps/bws-google-maps.php'               => array(
    191         'category'     => array( 'content' ),
    192         'name'         => 'Maps',
    193         'description'  => __( 'Add customized Google maps to WordPress posts, pages and widgets.', 'bestwebsoft' ),
    194         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/?k=d8fac412d7359ebaa4ff53b46572f9f7&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    195         'settings'     => 'admin.php?page=bws-google-maps.php',
    196         'pro_version'  => 'bws-google-maps-pro/bws-google-maps-pro.php',
    197         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/bws-google-maps/buy/?k=117c3f9fc17f2c83ef430a8a9dc06f56&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    198         'pro_settings' => 'admin.php?page=bws-google-maps-pro.php',
    199     ),
    200103    'google-sitemap-plugin/google-sitemap-plugin.php'   => array(
    201104        'category'     => array( 'seo', 'recommended' ),
     
    208111        'pro_settings' => 'admin.php?page=google-sitemap-pro.php',
    209112    ),
    210     'google-shortlink/google-shortlink.php'             => array(
    211         'category'    => array( 'seo' ),
    212         'name'        => 'Shortlink',
    213         'description' => __( 'Replace external WordPress website links with Google shortlinks and track click stats.', 'bestwebsoft' ),
    214         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/google-shortlink/?k=afcf3eaed021bbbbeea1090e16bc22db&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    215         'settings'    => 'admin.php?page=gglshrtlnk_options',
    216     ),
    217     'gpt-ai-content-creator-by-bestwebsoft/gpt-ai-content-creator-by-bestwebsoft.php' => array(
    218         'category'     => array( 'content', 'recommended' ),
    219         'name'         => 'GPT AI Content Creator',
    220         'description'  => __( 'Create Content with GPT.', 'bestwebsoft' ),
    221         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/gpt-ai-content-creator/?k=f1ef1b7d7d05f93c570b940cc9acfe15&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    222         'settings'     => 'admin.php?page=gpt-ai-content-creator.php',
    223         'icon'         => bws_menu_url( 'icons/plugins/' ) . 'gpt-ai-content-creator.png',
    224         'pro_version'  => 'gpt-ai-content-creator-pro-by-bestwebsoft/gpt-ai-content-creator-pro-by-bestwebsoft.php',
    225         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/gpt-ai-content-creator/buy/?k=8b19619d4a36f8b42c5d4fbcbd9775bb&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    226         'pro_settings' => 'admin.php?page=gpt-ai-content-creator-pro.php',
    227     ),
    228     'htaccess/htaccess.php'                             => array(
     113    'htaccess/htaccess.php'                            => array(
    229114        'category'     => array( 'security' ),
    230115        'name'         => 'Htaccess',
     
    235120        'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/htaccess/buy/?k=59e9209a32864be534fda77d5e591c15&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    236121        'pro_settings' => 'admin.php?page=htaccess-pro.php',
    237     ),
    238     'job-board/job-board.php'                           => array(
    239         'category'    => array( 'ecommerce' ),
    240         'name'        => 'Job Board',
    241         'description' => __( 'Create your personal job board and listing WordPress website. Search jobs, submit CV/resumes, choose candidates.', 'bestwebsoft' ),
    242         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/job-board/?k=b0c504c9ce6edd6692e04222af3fed6f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    243         'settings'    => 'admin.php?page=job-board.php',
    244122    ),
    245123    'limit-attempts/limit-attempts.php'                 => array(
     
    253131        'pro_settings' => 'admin.php?page=limit-attempts-pro.php',
    254132    ),
    255     'bws-linkedin/bws-linkedin.php'                     => array(
    256         'category'     => array( 'smm' ),
    257         'name'         => 'LinkedIn',
     133    'bws-login-register/bws-login-register.php'         => array(
     134        'category'     => array( 'admin-tools', 'navigation' ),
     135        'name'         => 'Login & Register Form',
    258136        'description'  => __( 'Add LinkedIn Share and Follow buttons to WordPress posts, pages and widgets. 5 plugins included – profile, insider, etc.', 'bestwebsoft' ),
    259         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/?k=d63c7319622ccc5f589dd2d545c1d77c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    260         'settings'     => 'admin.php?page=linkedin.php',
    261         'pro_version'  => 'bws-linkedin-pro/bws-linkedin-pro.php',
    262         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/linkedin/buy/?k=41dcc36192994408d24b103a02134567&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    263         'pro_settings' => 'admin.php?page=linkedin-pro.php',
     137        'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/login-and-register/?k=7d503ba164eca02ddf5b2c4942cbb953&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
     138        'settings'     => 'admin.php?page=login-register-form.php',
     139        'pro_version'  => 'bws-login-register-pro/bws-login-register-pro.php',
     140        'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/login-and-register/buy/?k=df2a23c0abf357439d325bf3953deaf8&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
     141        'pro_settings' => 'admin.php?page=bws-login-register-pro.php',
    264142    ),
    265143    'multilanguage/multilanguage.php'                   => array(
     
    293171        'pro_settings' => 'admin.php?page=pdf-print-pro.php',
    294172    ),
    295     'bws-pinterest/bws-pinterest.php'                   => array(
    296         'category'     => array( 'smm' ),
    297         'name'         => 'Pinterest',
    298         'description'  => __( 'Add Pinterest Follow, Pin It buttons and profile widgets (Pin, Board, Profile) to WordPress posts, pages and widgets.', 'bestwebsoft' ),
    299         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/?k=504107b6213f247a67fe7ffb94e97c78&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    300         'settings'     => 'admin.php?page=pinterest.php',
    301         'pro_version'  => 'bws-pinterest-pro/bws-pinterest-pro.php',
    302         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/pinterest/buy/?k=ab0069edd1914a3ca8f541bfd88bb0bb&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    303         'pro_settings' => 'admin.php?page=pinterest-pro.php',
    304     ),
    305     'portfolio/portfolio.php'                           => array(
    306         'category'     => array( 'content', 'recommended' ),
    307         'name'         => 'Portfolio',
    308         'description'  => __( 'Create your personal portfolio WordPress website. Manage and showcase past projects to get more clients.', 'bestwebsoft' ),
    309         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/?k=1249a890c5b7bba6bda3f528a94f768b&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    310         'settings'     => 'admin.php?page=portfolio.php',
    311         'pro_version'  => 'portfolio-pro/portfolio-pro.php',
    312         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/portfolio/buy/?k=2cc716026197d36538a414b728e49fdd&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    313         'pro_settings' => 'admin.php?page=portfolio-pro.php',
    314     ),
    315     'post-to-csv/post-to-csv.php'                       => array(
    316         'category'     => array( 'admin-tools' ),
    317         'name'         => 'Post to CSV',
    318         'description'  => __( 'Export WordPress posts to CSV file format easily. Configure data order.', 'bestwebsoft' ),
    319         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/?k=653aa55518ae17409293a7a894268b8f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    320         'settings'     => 'admin.php?page=post-to-csv.php',
    321         'pro_version'  => 'post-to-csv-pro/post-to-csv-pro.php',
    322         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/post-to-csv/buy/?k=b6521601d1579ed9c556ba98234f2d8f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    323         'pro_settings' => 'admin.php?page=post-to-csv-pro.php',
    324     ),
    325173    'profile-extra-fields/profile-extra-fields.php'     => array(
    326174        'category'     => array( 'admin-tools' ),
     
    333181        'pro_settings' => 'admin.php?page=profile-extra-fields-pro.php',
    334182    ),
    335     'promobar/promobar.php'                             => array(
    336         'category'     => array( 'marketing' ),
    337         'name'         => 'PromoBar',
    338         'description'  => __( 'Add and display HTML advertisement banner on WordPress website. Customize bar styles and appearance.', 'bestwebsoft' ),
    339         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/?k=619eac2232d9cfa382c4e678c3b14766&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    340         'settings'     => 'admin.php?page=promobar.php',
    341         'pro_version'  => 'promobar-pro/promobar-pro.php',
    342         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/promobar/buy/?k=a9b09708502f12a1483532ba12fe2103&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    343         'pro_settings' => 'admin.php?page=promobar-pro.php',
    344     ),
    345183    'quotes-and-tips/quotes-and-tips.php'               => array(
    346184        'category'    => array( 'content' ),
     
    349187        'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/quotes-and-tips/?k=5738a4e85a798c4a5162240c6515098d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    350188        'settings'    => 'admin.php?page=quotes-and-tips.php',
    351     ),
    352     'rating-bws/rating-bws.php'                         => array(
    353         'category'     => array( 'marketing' ),
    354         'name'         => 'Rating',
    355         'description'  => __( 'Add rating plugin to your WordPress website to receive feedback from your customers.', 'bestwebsoft' ),
    356         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/rating/?k=c00e0824bb999735a3224616ef51f4c5&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    357         'settings'     => 'admin.php?page=rating.php',
    358         'pro_version'  => 'rating-bws-pro/rating-bws-pro.php',
    359         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/rating/buy/?k=ba459f3115edb7be610e8d6f8e05df6c&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    360         'pro_settings' => 'admin.php?page=rating-bws-pro.php',
    361     ),
    362     'realty/realty.php'                                 => array(
    363         'category'     => array( 'ecommerce' ),
    364         'name'         => 'Realty',
    365         'description'  => __( 'Create your personal real estate WordPress website. Sell, rent and buy properties. Add, search and browse listings easily.', 'bestwebsoft' ),
    366         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/realty/?k=d55de979dbbbb7af0b2ff1d7f43884fa&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    367         'settings'     => 'admin.php?page=realty_settings',
    368         'pro_version'  => 'realty-pro/realty-pro.php',
    369         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/realty/buy/?k=c7791f0a72acfb36f564a614dbccb474&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    370         'pro_settings' => 'admin.php?page=realty_pro_settings',
    371     ),
    372     'relevant/related-posts-plugin.php'                 => array(
    373         'category'    => array( 'marketing', 'recommended' ),
    374         'name'        => 'Relevant - Related, Featured, Latest, and Popular Posts',
    375         'description' => __( 'Add related, featured, latest, and popular posts to your WordPress website. Connect your blog readers with a relevant content.', 'bestwebsoft' ),
    376         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/related-posts/?k=73fb737037f7141e66415ec259f7e426&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    377         'settings'    => 'admin.php?page=related-posts-plugin.php',
    378     ),
    379     'sender/sender.php'                                 => array(
    380         'category'     => array( 'marketing', 'recommended' ),
    381         'name'         => 'Sender',
    382         'description'  => __( 'Send bulk email messages to WordPress users. Custom templates, advanced settings and detailed reports.', 'bestwebsoft' ),
    383         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/sender/?k=89c297d14ba85a8417a0f2fc05e089c7&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    384         'settings'     => 'admin.php?page=sndr_settings',
    385         'pro_version'  => 'sender-pro/sender-pro.php',
    386         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/sender/buy/?k=dc5d1a87bdc8aeab2de40ffb99b38054&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    387         'pro_settings' => 'admin.php?page=sndrpr_settings',
    388     ),
    389     'slider-bws/slider-bws.php'                         => array(
    390         'category'    => array( 'content' ),
    391         'name'        => 'Slider',
    392         'description' => __( 'The best responsive slider plugin for your WordPress website. Create beautifully animated slides just in a few clicks.', 'bestwebsoft' ),
    393         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/slider/?k=02acebf8531b2995e7de8474ae28e290&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    394         'settings'    => 'admin.php?page=slider-settings.php',
    395     ),
    396     'bws-smtp/bws-smtp.php'                             => array(
    397         'category'    => array( 'admin-tools' ),
    398         'name'        => 'SMTP',
    399         'description' => __( 'Configure SMTP server to receive email messages from WordPress to Gmail, Yahoo, Hotmail and other services.', 'bestwebsoft' ),
    400         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/smtp/?k=0546419f962704429ad2d9b88567752f&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    401         'settings'    => 'admin.php?page=bwssmtp_settings',
    402     ),
    403     'social-buttons-pack/social-buttons-pack.php'       => array(
    404         'category'     => array( 'smm', 'recommended' ),
    405         'name'         => 'Social Buttons Pack',
    406         'description'  => __( 'Add social media buttons and widgets to WordPress posts, pages and widgets. FB, Twitter, Pinterest, LinkedIn.', 'bestwebsoft' ),
    407         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/?k=b6440fad9f54274429e536b0c61b42da&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    408         'settings'     => 'admin.php?page=social-buttons.php',
    409         'pro_version'  => 'social-buttons-pack-pro/social-buttons-pack-pro.php',
    410         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/social-buttons-pack/buy/?k=e7059cacde0d275b224a5d995c9160fd&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    411         'pro_settings' => 'admin.php?page=social-buttons-pro.php',
    412     ),
    413     'social-login-bws/social-login-bws.php'             => array(
    414         'category'    => array( 'smm' ),
    415         'name'        => 'Social Login',
    416         'description' => __( 'Add social media login, registration, and commenting to your WordPress website.', 'bestwebsoft' ),
    417         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/social-login/?k=62817c9c94f24129e40894e1d9c3f49d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    418         'settings'    => 'admin.php?page=social-login.php',
    419     ),
    420     'subscriber/subscriber.php'                         => array(
    421         'category'     => array( 'marketing', 'recommended' ),
    422         'name'         => 'Subscriber',
    423         'description'  => __( 'Add email newsletter sign up form to WordPress posts, pages and widgets. Collect data and subscribe your users.', 'bestwebsoft' ),
    424         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/?k=a4ecc1b7800bae7329fbe8b4b04e9c88&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    425         'settings'     => 'admin.php?page=subscriber.php',
    426         'pro_version'  => 'subscriber-pro/subscriber-pro.php',
    427         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/subscriber/buy/?k=02dbb8b549925d9b74e70adc2a7282e4&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    428         'pro_settings' => 'admin.php?page=subscriber-pro.php',
    429     ),
    430     'bws-testimonials/bws-testimonials.php'             => array(
    431         'category'    => array( 'marketing', 'recommended' ),
    432         'name'        => 'Testimonials',
    433         'description' => __( 'Add testimonials and feedbacks from your customers to WordPress website posts, pages, and widgets.', 'bestwebsoft' ),
    434         'link'        => 'https://bestwebsoft.com/products/wordpress/plugins/testimonials/?k=3fe4bb89dc901c98e43a113e08f8db73&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    435         'settings'    => 'admin.php?page=testimonials.php',
    436         'pro_version'  => 'bws-testimonials-pro/bws-testimonials-pro.php',
    437         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/testimonials/buy/?k=3fe4bb89dc901c98e43a113e08f8db73&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    438         'pro_settings' => 'edit.php?post_type=bws-testimonial&page=testimonials-ro.php',
    439     ),
    440     'timesheet/timesheet.php'                           => array(
    441         'category'     => array( 'admin-tools' ),
    442         'name'         => 'Timesheet',
    443         'description'  => __( 'Best timesheet plugin for WordPress. Track employee time, streamline attendance and generate reports.', 'bestwebsoft' ),
    444         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/?k=06a58bb78c17a43df01825925f05a5c1&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    445         'settings'     => 'admin.php?page=timesheet_settings',
    446         'pro_version'  => 'timesheet-pro/timesheet-pro.php',
    447         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/timesheet/buy/?k=a448ce4cab0d365b7774c9bc3903b851&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    448         'pro_settings' => 'admin.php?page=timesheet_pro_settings',
    449     ),
    450     'twitter-plugin/twitter.php'                        => array(
    451         'category'     => array( 'smm' ),
    452         'name'         => 'Twitter',
    453         'description'  => __( 'Add Twitter Follow, Tweet, Hashtag, and Mention buttons to WordPress posts and pages.', 'bestwebsoft' ),
    454         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/?k=f8cb514e25bd7ec4974d64435c5eb333&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    455         'settings'     => 'admin.php?page=twitter.php',
    456         'pro_version'  => 'twitter-pro/twitter-pro.php',
    457         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/twitter/buy/?k=63ecbf0cc9cebf060b5a3c9362299700&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    458         'pro_settings' => 'admin.php?page=twitter-pro.php',
    459189    ),
    460190    'updater/updater.php'                               => array(
     
    478208        'pro_settings' => 'admin.php?page=user-role-pro.php',
    479209    ),
    480     'visitors-online/visitors-online.php'               => array(
    481         'category'     => array( 'admin-tools' ),
    482         'name'         => 'Visitors Online',
    483         'description'  => __( 'Display live count of online visitors who are currently browsing your WordPress website.', 'bestwebsoft' ),
    484         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/?k=93c28013a4f830671b3bba9502ed5177&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    485         'settings'     => 'admin.php?page=visitors-online.php',
    486         'pro_version'  => 'visitors-online-pro/visitors-online-pro.php',
    487         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/visitors-online/buy/?k=f9a746075ff8a0a6cb192cb46526afd2&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    488         'pro_settings' => 'admin.php?page=visitors-online-pro.php',
    489     ),
    490     'zendesk-help-center/zendesk-help-center.php'       => array(
    491         'category'     => array( 'admin-tools' ),
    492         'name'         => 'Help Center',
    493         'description'  => __( 'Backup and export Zendesk Help Center content automatically to your WordPress website database.', 'bestwebsoft' ),
    494         'link'         => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/?k=2a5fd2f4b2f4bde46f2ca44b8d15846d&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    495         'settings'     => 'admin.php?page=zendesk_hc.php',
    496         'pro_version'  => 'zendesk-help-center-pro/zendesk-help-center-pro.php',
    497         'purchase'     => 'https://bestwebsoft.com/products/wordpress/plugins/zendesk-help-center/buy/?k=45199e4538b5befe4d9566868a61a3aa&pn=' . $bws_plugin_info['id'] . '&v=' . $bws_plugin_info['version'] . '&wp_v=' . $wp_version,
    498         'pro_settings' => 'admin.php?page=zendesk_hc_pro.php',
    499     ),
    500210);
    501211
  • google-sitemap-plugin/trunk/google-sitemap-plugin.php

    r3290352 r3366420  
    77Text Domain: google-sitemap-plugin
    88Domain Path: /languages
    9 Version: 3.3.3
     9Version: 3.3.5
    1010Author URI: https://bestwebsoft.com/
    1111License: GPLv2 or later
     
    185185            add_action( 'embed_head', 'gglstmp_canonical_tag' );
    186186        }
     187
     188        if ( ! empty( $gglstmp_options['google_news_sitemap'] ) && 1 === $gglstmp_options['google_news_sitemap'] && ! wp_next_scheduled ( 'gglstmp_schedule_news_sitemap' ) ) {
     189        wp_schedule_event( time(), 'daily', 'gglstmp_schedule_news_sitemap' );
     190    }
    187191    }
    188192}
     
    311315            'split_sitemap'           => 0,
    312316            'split_sitemap_items'     => array(),
     317            'google_news_sitemap'     => 0,
     318            'google_news_post_type'   => 'post'
    313319        );
    314320
     
    380386    }
    381387}
     388
     389if ( ! function_exists( 'gglstmp_prepare_news_sitemap' ) ) {
     390    /**
     391     * Function prepares all the items that should be included into news sitemap.
     392     * After array of items is prepared, it is divided into multiple parts according to the limit value.
     393     * A single sitemap file will be created if the limit isn't reached,
     394     * otherwise sitemap file for each part of array of items will be created. Blog index file would be created also.
     395     * If multisite network is used, network index file will be created also.
     396     *
     397     * @since 3.1.0
     398     *
     399     * @param   mixed $blog_id (int)The blog id the sitemap is created for. Default is false - for current blog.
     400     */
     401    function gglstmp_prepare_news_sitemap( $blog_id = false ) {
     402        global $wpdb, $gglstmp_options;
     403        if ( ! empty( $gglstmp_options['google_news_sitemap'] ) && 1 === $gglstmp_options['google_news_sitemap'] ) {
     404            $default_name = 'news_sitemap';
     405            $existing_files = glob( ABSPATH . $default_name . '*.xml' );
     406            array_map( 'unlink', $existing_files );
     407            $posts = new WP_Query(
     408                array(
     409                    'post_type'           => $gglstmp_options['google_news_post_type'],
     410                    'post_status'         => 'publish',
     411                    'order'               => 'DESC',
     412                    'orderby'             => 'post_date',
     413                    'posts_per_page'      => -1,
     414                    'ignore_sticky_posts' => true,
     415                    'date_query'          => array(
     416                        array(
     417                            'after'     => '2 days ago',
     418                            'inclusive' => true,
     419                        ),
     420                    )
     421                )
     422            );
     423            if( $posts->have_posts() ) {
     424                if ( $posts->found_posts <= $gglstmp_options['limit'] ) {
     425                    $part_num = 0;
     426                    gglstmp_create_news_sitemap( $posts->posts, $part_num );
     427                } else if ( 0 < $gglstmp_options['limit'] ) {
     428                    $parts = array_chunk( $posts->posts, $gglstmp_options['limit'] );
     429                    foreach ( $parts as $part_num => $parts_elements ) {
     430                        gglstmp_create_news_sitemap( $parts_elements, $part_num + 1 );
     431                    }
     432                } else {
     433                    $part_num = 0;
     434                    gglstmp_create_news_sitemap( $posts->posts, $part_num );
     435                }
     436            } else {
     437                gglstmp_create_news_sitemap( array(), 0 );
     438            }
     439        }
     440    }
     441}
     442
    382443
    383444if ( ! function_exists( 'gglstmp_prepare_sitemap' ) ) {
     
    764825            }
    765826        }
     827
     828        gglstmp_prepare_news_sitemap( $blog_id );
     829
    766830        if ( $is_multisite ) {
    767831            /* Removing main index file */
     
    909973        gglstmp_save_sitemap_info( $filename );
    910974
     975    }
     976}
     977
     978if ( ! function_exists( 'gglstmp_create_news_sitemap' ) ) {
     979    /**
     980     * Function creates xml sitemap file with the provided list of elements.
     981     * Global variables are used and function mltlngg_get_lang_link() is called from the plugin Multilanguage.
     982     * Filename is generated in the following way:
     983     * On a single site:
     984     * a) $part_num isn't set: "sitemap.xml"
     985     * b) $part_num is set and equals 2: "sitemap_2.xml".
     986     * On single subsite of multisite network, $blog_id == 1:
     987     * a) $part_num isn't set: "sitemap_1.xml"
     988     * b) $part_num is set and equals 2: "sitemap_1_2.xml".
     989     *
     990     * @since 3.1.0
     991     *
     992     * @param array  $elements  An array of elements to include to the sitemap.
     993     * @param int    $part_num  (optional) Indicates the number of the part of elements. It is included to the sitemap filename.
     994     */
     995    function gglstmp_create_news_sitemap( $elements, $part_num = 0 ) {
     996        global $blog_id, $mltlngg_languages, $mltlngg_enabled_languages, $gglstmp_options;
     997
     998        $languages = array(
     999            'af' => 'afg',
     1000            'ax' => 'ala',
     1001            'al' => 'alb',
     1002            'dz' => 'dza',
     1003            'as' => 'asm',
     1004            'ad' => 'and',
     1005            'ao' => 'ago',
     1006            'ai' => 'aia',
     1007            'aq' => 'ata',
     1008            'ag' => 'atg',
     1009            'ar' => 'arg',
     1010            'am' => 'arm',
     1011            'aw' => 'abw',
     1012            'au' => 'aus',
     1013            'at' => 'aut',
     1014            'az' => 'aze',
     1015            'bs' => 'bhs',
     1016            'bh' => 'bhr',
     1017            'bd' => 'bgd',
     1018            'bb' => 'brb',
     1019            'by' => 'blr',
     1020            'be' => 'bel',
     1021            'bz' => 'blz',
     1022            'bj' => 'ben',
     1023            'bm' => 'bmu',
     1024            'bt' => 'btn',
     1025            'bo' => 'bol',
     1026            'bq' => 'bes',
     1027            'ba' => 'bih',
     1028            'bw' => 'bwa',
     1029            'bv' => 'bvt',
     1030            'br' => 'bra',
     1031            'io' => 'iot',
     1032            'bn' => 'brn',
     1033            'bg' => 'bgr',
     1034            'bf' => 'bfa',
     1035            'bi' => 'bdi',
     1036            'cv' => 'cpv',
     1037            'kh' => 'khm',
     1038            'cm' => 'cmr',
     1039            'ca' => 'can',
     1040            'ky' => 'cym',
     1041            'cf' => 'caf',
     1042            'td' => 'tcd',
     1043            'cl' => 'chl',
     1044            'cn' => 'chn',
     1045            'cx' => 'cxr',
     1046            'cc' => 'cck',
     1047            'co' => 'col',
     1048            'km' => 'com',
     1049            'cg' => 'cog',
     1050            'cd' => 'cod',
     1051            'ck' => 'cok',
     1052            'cr' => 'cri',
     1053            'ci' => 'civ',
     1054            'hr' => 'hrv',
     1055            'cu' => 'cub',
     1056            'cw' => 'cuw',
     1057            'cy' => 'cyp',
     1058            'cz' => 'cze',
     1059            'dk' => 'dnk',
     1060            'dj' => 'dji',
     1061            'dm' => 'dma',
     1062            'do' => 'dom',
     1063            'ec' => 'ecu',
     1064            'eg' => 'egy',
     1065            'sv' => 'slv',
     1066            'gq' => 'gnq',
     1067            'er' => 'eri',
     1068            'ee' => 'est',
     1069            'sz' => 'swz',
     1070            'et' => 'eth',
     1071            'fk' => 'flk',
     1072            'fo' => 'fro',
     1073            'fj' => 'fji',
     1074            'fi' => 'fin',
     1075            'fr' => 'fra',
     1076            'gf' => 'guf',
     1077            'pf' => 'pyf',
     1078            'tf' => 'atf',
     1079            'ga' => 'gab',
     1080            'gm' => 'gmb',
     1081            'ge' => 'geo',
     1082            'de' => 'deu',
     1083            'gh' => 'gha',
     1084            'gi' => 'gib',
     1085            'gr' => 'grc',
     1086            'gl' => 'grl',
     1087            'gd' => 'grd',
     1088            'gp' => 'glp',
     1089            'gu' => 'gum',
     1090            'gt' => 'gtm',
     1091            'gg' => 'ggy',
     1092            'gn' => 'gin',
     1093            'gw' => 'gnb',
     1094            'gy' => 'guy',
     1095            'ht' => 'hti',
     1096            'hm' => 'hmd',
     1097            'va' => 'vat',
     1098            'hn' => 'hnd',
     1099            'hk' => 'hkg',
     1100            'hu' => 'hun',
     1101            'is' => 'isl',
     1102            'in' => 'ind',
     1103            'id' => 'idn',
     1104            'ir' => 'irn',
     1105            'iq' => 'irq',
     1106            'ie' => 'irl',
     1107            'im' => 'imn',
     1108            'il' => 'isr',
     1109            'it' => 'ita',
     1110            'jm' => 'jam',
     1111            'jp' => 'jpn',
     1112            'je' => 'jey',
     1113            'jo' => 'jor',
     1114            'kz' => 'kaz',
     1115            'ke' => 'ken',
     1116            'ki' => 'kir',
     1117            'kp' => 'prk',
     1118            'kr' => 'kor',
     1119            'kw' => 'kwt',
     1120            'kg' => 'kgz',
     1121            'la' => 'lao',
     1122            'lv' => 'lva',
     1123            'lb' => 'lbn',
     1124            'ls' => 'lso',
     1125            'lr' => 'lbr',
     1126            'ly' => 'lby',
     1127            'li' => 'lie',
     1128            'lt' => 'ltu',
     1129            'lu' => 'lux',
     1130            'mo' => 'mac',
     1131            'mk' => 'mkd',
     1132            'mg' => 'mdg',
     1133            'mw' => 'mwi',
     1134            'my' => 'mys',
     1135            'mv' => 'mdv',
     1136            'ml' => 'mli',
     1137            'mt' => 'mlt',
     1138            'mh' => 'mhl',
     1139            'mq' => 'mtq',
     1140            'mr' => 'mrt',
     1141            'mu' => 'mus',
     1142            'yt' => 'myt',
     1143            'mx' => 'mex',
     1144            'fm' => 'fsm',
     1145            'md' => 'mda',
     1146            'mc' => 'mco',
     1147            'mn' => 'mng',
     1148            'me' => 'mne',
     1149            'ms' => 'msr',
     1150            'ma' => 'mar',
     1151            'mz' => 'moz',
     1152            'mm' => 'mmr',
     1153            'na' => 'nam',
     1154            'nr' => 'nru',
     1155            'np' => 'npl',
     1156            'nl' => 'nld',
     1157            'nc' => 'ncl',
     1158            'nz' => 'nzl',
     1159            'ni' => 'nic',
     1160            'ne' => 'ner',
     1161            'ng' => 'nga',
     1162            'nu' => 'niu',
     1163            'nf' => 'nfk',
     1164            'mp' => 'mnp',
     1165            'no' => 'nor',
     1166            'om' => 'omn',
     1167            'pk' => 'pak',
     1168            'pw' => 'plw',
     1169            'ps' => 'pse',
     1170            'pa' => 'pan',
     1171            'pg' => 'png',
     1172            'py' => 'pry',
     1173            'pe' => 'per',
     1174            'ph' => 'phl',
     1175            'pn' => 'pcn',
     1176            'pl' => 'pol',
     1177            'pt' => 'prt',
     1178            'pr' => 'pri',
     1179            'qa' => 'qat',
     1180            're' => 'reu',
     1181            'ro' => 'rou',
     1182            'ru' => 'rus',
     1183            'rw' => 'rwa',
     1184            'bl' => 'blm',
     1185            'sh' => 'shn',
     1186            'kn' => 'kna',
     1187            'lc' => 'lca',
     1188            'mf' => 'maf',
     1189            'pm' => 'spm',
     1190            'vc' => 'vct',
     1191            'ws' => 'wsm',
     1192            'sm' => 'smr',
     1193            'st' => 'stp',
     1194            'sa' => 'sau',
     1195            'sn' => 'sen',
     1196            'rs' => 'srb',
     1197            'sc' => 'syc',
     1198            'sl' => 'sle',
     1199            'sg' => 'sgp',
     1200            'sx' => 'sxm',
     1201            'sk' => 'svk',
     1202            'si' => 'svn',
     1203            'sb' => 'slb',
     1204            'so' => 'som',
     1205            'za' => 'zaf',
     1206            'gs' => 'sgs',
     1207            'ss' => 'ssd',
     1208            'es' => 'esp',
     1209            'lk' => 'lka',
     1210            'sd' => 'sdn',
     1211            'sr' => 'sur',
     1212            'sj' => 'sjm',
     1213            'se' => 'swe',
     1214            'ch' => 'che',
     1215            'sy' => 'syr',
     1216            'tw' => 'twn',
     1217            'tj' => 'tjk',
     1218            'tz' => 'tza',
     1219            'th' => 'tha',
     1220            'tl' => 'tls',
     1221            'tg' => 'tgo',
     1222            'tk' => 'tkl',
     1223            'to' => 'ton',
     1224            'tt' => 'tto',
     1225            'tn' => 'tun',
     1226            'tr' => 'tur',
     1227            'tm' => 'tkm',
     1228            'tc' => 'tca',
     1229            'tv' => 'tuv',
     1230            'ug' => 'uga',
     1231            'ua' => 'ukr',
     1232            'ae' => 'are',
     1233            'gb' => 'gbr',
     1234            'us' => 'usa',
     1235            'um' => 'umi',
     1236            'uy' => 'ury',
     1237            'uz' => 'uzb',
     1238            'vu' => 'vut',
     1239            've' => 'ven',
     1240            'vn' => 'vnm',
     1241            'vg' => 'vgb',
     1242            'vi' => 'vir',
     1243            'wf' => 'wlf',
     1244            'eh' => 'esh',
     1245            'ye' => 'yem',
     1246            'zm' => 'zmb',
     1247            'zw' => 'zwe'
     1248        );
     1249
     1250        $xml                  = new DomDocument( '1.0', 'utf-8' );
     1251        $home_url             = site_url( '/' );
     1252        $xml_stylesheet_path  = ( defined( 'WP_CONTENT_DIR' ) ) ? $home_url . basename( WP_CONTENT_DIR ) : $home_url . 'wp-content';
     1253        $xml_stylesheet_path .= ( defined( 'WP_PLUGIN_DIR' ) ) ? '/' . basename( WP_PLUGIN_DIR ) . '/google-sitemap-plugin/sitemap.xsl' : '/plugins/google-sitemap-plugin/sitemap.xsl';
     1254        $xslt                 = $xml->createProcessingInstruction( 'xml-stylesheet', "type=\"text/xsl\" href=\"$xml_stylesheet_path\"" );
     1255        $xml->appendChild( $xslt );
     1256        $urlset = $xml->appendChild( $xml->createElementNS( 'http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset' ) );
     1257
     1258        /* Used to check compatibility and work with the plugin Multilanguage*/
     1259        $count_lang    = empty( $mltlngg_enabled_languages ) ? '' : count( $mltlngg_enabled_languages );
     1260        $compatibility = false;
     1261        if ( ! empty( $gglstmp_options['alternate_language'] ) && ( '' !== $count_lang ) ) {
     1262            $compatibility = true;
     1263        }
     1264
     1265        /* Create an array with active languages and add a value for hreflang */
     1266        $enabled_languages = array();
     1267        if ( $compatibility ) {
     1268            $urlset->setAttributeNS( 'http://www.w3.org/2000/xmlns/', 'xmlns:xhtml', 'http://www.w3.org/1999/xhtml' );
     1269
     1270            foreach ( $mltlngg_enabled_languages as $language ) {
     1271                foreach ( $mltlngg_languages as $item ) {
     1272                    if ( $language['name'] === $item[2] ) {
     1273                        $language['lang']              = $item[0];
     1274                        $enabled_languages[ $item[2] ] = $language;
     1275                    }
     1276                }
     1277            }
     1278
     1279            if ( function_exists( 'mltlngg_get_lang_link' ) ) {
     1280                $lang_link = 'mltlngg_get_lang_link';
     1281            }
     1282            $args_links = array();
     1283        }
     1284
     1285        $site_name = get_bloginfo( 'name' );
     1286        $site_lang = get_bloginfo( 'language' );
     1287
     1288        foreach ( $elements as $element ) {
     1289            if ( $compatibility ) {
     1290                foreach ( $enabled_languages as $language ) {
     1291                    $args_links['lang'] = $language['locale'];
     1292                    $args_links['url']  = $element['url'];
     1293
     1294                    $lang = explode( '_', $language['locale'] );
     1295
     1296                    $url = $urlset->appendChild( $xml->createElement( 'url' ) );
     1297                    $loc = $url->appendChild( $xml->createElement( 'loc' ) );
     1298                    $loc->appendChild( $xml->createTextNode( $lang_link( $args_links ) ) );
     1299
     1300                    $news = $url->appendChild( $xml->createElement( 'news:news' ) );
     1301                    $publication = $news->appendChild( $xml->createElement( 'news:publication' ) );
     1302                    $name = $publication->appendChild( $xml->createElement( 'news:name' ) );
     1303                    $name->appendChild( $xml->createTextNode( $site_name ) );
     1304                    $language = $publication->appendChild( $xml->createElement( 'news:language' ) );
     1305                    $language->appendChild( $xml->createTextNode( isset( $languages[ $lang[0] ] ) ? $languages[ $lang[0] ] : $language['locale'] ) );
     1306                    $publication_date = $news->appendChild( $xml->createElement( 'news:publication_date' ) );
     1307                    $publication_date->appendChild( $xml->createTextNode( $element->post_date ) );
     1308                    $title = $news->appendChild( $xml->createElement( 'news:title' ) );
     1309                    $title->appendChild( $xml->createTextNode( $element->post_title ) );
     1310                }
     1311            } else {
     1312                $lang = explode( '_', $site_lang );
     1313
     1314                $url = $urlset->appendChild( $xml->createElement( 'url' ) );
     1315                $loc = $url->appendChild( $xml->createElement( 'loc' ) );
     1316                $loc->appendChild( $xml->createTextNode( get_permalink( $element->ID ) ) );
     1317
     1318                $news = $url->appendChild( $xml->createElement( 'news:news' ) );
     1319                $publication = $news->appendChild( $xml->createElement( 'news:publication' ) );
     1320                $name = $publication->appendChild( $xml->createElement( 'news:name' ) );
     1321                $name->appendChild( $xml->createTextNode( $site_name ) );
     1322                $language = $publication->appendChild( $xml->createElement( 'news:language' ) );
     1323                $language_text_node = apply_filters( 'gglstmp_news_language', isset( $languages[ $lang[0] ] ) ? $languages[ $lang[0] ] : 'en', $element );
     1324                $language->appendChild( $xml->createTextNode( $language_text_node ) );
     1325                $publication_date = $news->appendChild( $xml->createElement( 'news:publication_date' ) );
     1326                $publication_date->appendChild( $xml->createTextNode( $element->post_date ) );
     1327                $title = $news->appendChild( $xml->createElement( 'news:title' ) );
     1328                $title->appendChild( $xml->createTextNode( $element->post_title ) );
     1329            }
     1330        }
     1331
     1332        $xml->formatOutput = true;
     1333
     1334        if ( ! is_writable( ABSPATH ) ) {
     1335            @chmod( ABSPATH, 0755 );
     1336        }
     1337
     1338        $part_num = ( absint( $part_num ) > 0 ) ? '_' . absint( $part_num ) : '';
     1339
     1340        $default_name = 'news_sitemap';
     1341
     1342        if ( is_multisite() ) {
     1343            $filename = $default_name . '_' . absint( $blog_id ) . $part_num . '.xml';
     1344        } else {
     1345            $filename = $default_name . $part_num . '.xml';
     1346        }
     1347
     1348        $result = $xml->save( ABSPATH . $filename );
     1349
     1350        gglstmp_save_sitemap_info( $filename );
    9111351    }
    9121352}
     
    23502790
    23512791add_action( 'gglstmp_sitemap_cron', 'gglstmp_prepare_sitemap' );
     2792add_action( 'gglstmp_schedule_news_sitemap', 'gglstmp_prepare_news_sitemap' );
    23522793
    23532794/* Rebuild sitemap on permalink structure change, on taxonomy term add/edit/delete */
  • google-sitemap-plugin/trunk/includes/class-gglstmp-settings.php

    r3184465 r3366420  
    267267                    }
    268268
     269                    $google_news_sitemap = isset( $_POST['gglstmp_google_news_sitemap'] ) ? 1 : 0;
     270
    269271                    $split_sitemap = isset( $_POST['gglstmp_split_sitemap'] ) ? 1 : 0;
    270272
    271                     if ( $this->options['split_sitemap'] != $split_sitemap ) {
     273                    if ( $this->options['split_sitemap'] != $split_sitemap || $google_news_sitemap != $this->options['google_news_sitemap'] ) {
    272274                        $sitemapcreate = true;
    273275                        $reschedule    = true;
    274276                    }
    275277
    276                     $this->options['split_sitemap'] = $split_sitemap;
     278                    $this->options['split_sitemap']       = $split_sitemap;
     279                    $this->options['google_news_sitemap'] = $google_news_sitemap;
    277280
    278281                    $split_items                    = array();
     
    285288                        }
    286289                    }
    287                     if ( $this->options['split_sitemap_items'] !== $split_items ) {
     290
     291                    $google_news_post_type = isset( $_POST['gglstmp_google_news_post_type'] ) ? sanitize_text_field( wp_unslash( $_POST['gglstmp_google_news_post_type'] ) ) : 'post';
     292
     293                    if ( $this->options['split_sitemap_items'] !== $split_items || $this->options['google_news_post_type'] !== $google_news_post_type ) {
    288294                        $sitemapcreate = true;
    289295                        $reschedule = true;
    290296                    }
    291                     $this->options['split_sitemap_items'] = $split_items;
     297
     298                    $this->options['split_sitemap_items']   = $split_items;
     299                    $this->options['google_news_post_type'] = $google_news_post_type;
    292300
    293301                    $this->options['remove_automatic_canonical'] = isset( $_POST['gglstmp_automatic_canonical'] ) ? 1 : 0;
     
    476484            <?php } ?>
    477485            <table class="form-table gglstmp_settings_form">
     486                <tr>
     487                    <th><?php esc_html_e( 'Google News Sitemap', 'google-sitemap-plugin' ); ?></th>
     488                    <td>
     489                        <input type='checkbox' id="gglstmp_google_news_sitemap" name="gglstmp_google_news_sitemap" value="1" <?php checked( $this->options['google_news_sitemap'], 1 ); ?> />
     490                        <span class="bws_info"><?php esc_html_e( 'Create a separate sitemap for news. Only include recent URLs for articles that were created in the last two days', 'google-sitemap-plugin' ); ?></span>
     491                        &nbsp;<a
     492                                    href="https://developers.google.com/search/docs/crawling-indexing/sitemaps/news-sitemap"
     493                                    target="_blank"><?php esc_html_e( 'Learn More', 'google-sitemap-plugin' ); ?></a>
     494                    </td>
     495                </tr>
     496                <tr class="gglstmp_google_news_post_type <?php echo 1 !== $this->options['google_news_sitemap'] ? 'hidden' : ''; ?>">
     497                    <th><?php esc_html_e( 'Google News Sitemap Post Type', 'google-sitemap-plugin' ); ?></th>
     498                    <td>
     499                        <?php
     500                        foreach ( $this->all_post_types as $post_type ) {
     501                            ?>
     502                            <label><input type='radio' name="gglstmp_google_news_post_type" value="<?php echo esc_attr( $post_type->name ); ?>" <?php checked( $this->options['google_news_post_type'] == $post_type->name ); ?> /><?php echo esc_html( $post_type->label ); ?></label><br />
     503                            <?php
     504                        }
     505                        ?>
     506                    </td>
     507                </tr>
    478508                <tr>
    479509                    <th><?php esc_html_e( 'Split Sitemap', 'google-sitemap-plugin' ); ?></th>
     
    737767         */
    738768        public function information_postbox_top() {
     769            global $gglstmp_options;
    739770            $default_name = 'sitemap';
    740771
     
    748779            }
    749780
     781            if ( ! empty( $gglstmp_options['google_news_sitemap'] ) && 1 === $gglstmp_options['google_news_sitemap'] ) {
     782                $default_news_name = 'news_sitemap';
     783                $existing_files = glob( ABSPATH . $default_news_name . '*.xml' );
     784            }
     785
    750786            if ( isset( $xml_file ) && file_exists( ABSPATH . $xml_file ) ) {
    751787
     
    757793                    )
    758794                );
     795                if ( ! empty( $existing_files ) ) {
     796                    $xml_news_url  = str_replace( ABSPATH, home_url( '/' ), $existing_files[0] );
     797                    printf(
     798                        '<div class="misc-pub-section"><strong>%s</strong></div>',
     799                        sprintf(
     800                            esc_html__( "News Sitemap File: %s", 'google-sitemap-plugin' ),
     801                            '<a href="' . esc_url( $xml_news_url ) . '" target="_blank">' . str_replace( ABSPATH, '', $existing_files[0] ) . '</a>'
     802                        )
     803                    );
     804                }
    759805
    760806                if ( ! $this->is_multisite ) {
  • google-sitemap-plugin/trunk/js/admin_script.js

    r2841034 r3366420  
    99            }
    1010        });
     11        $( '#gglstmp_google_news_sitemap' ).on ( 'change', function(){
     12            if ( $( this ).is( ':checked' ) ) {
     13                $( '.gglstmp_google_news_post_type' ).removeClass( 'hidden' );
     14            } else {
     15                $( '.gglstmp_google_news_post_type' ).addClass( 'hidden' );
     16            }
     17        });
    1118    });
    1219} )( jQuery );
  • google-sitemap-plugin/trunk/readme.txt

    r3290352 r3366420  
    33Donate link: https://bestwebsoft.com/donate/
    44Tags: add pages to sitemap, add posts to sitemap, add sitemap, google, google sitemap, google sitemap plugin, sitemap file path, update sitemap, google webmaster tools, site map, sitemaps, webmaster tools
    5 Requires at least: 5.6
    6 Tested up to: 6.8
    7 Stable tag: 3.3.3
     5Requires at least: 6.2
     6Tested up to: 6.8.2
     7Stable tag: 3.3.5
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    4141    * Delete website
    4242    * Get website info
     43* Add Sitemap to Google News Sitemap
    4344* Split Sitemap Items
    4445* Disable automatic canonical tag
     
    174175== Changelog ==
    175176
     177= V3.3.5 - 27.05.2025
     178* NEW : Added compatibility with Google News Sitemap.
     179* Update : We updated all functionality for wordpress 6.8.2.
     180* Update : BWS Panel section was updated.
     181
    176182= V3.3.3 - 09.05.2025
    177183* Update : We updated all functionality for wordpress 6.8.
     
    463469== Upgrade Notice ==
    464470
     471= V3.3.5  =
     472* The compatibility with new WordPress version updated.
     473* New feature added
     474
    465475= V3.3.3  =
    466476* The compatibility with new WordPress version updated.
Note: See TracChangeset for help on using the changeset viewer.