Элегантный способ создать карту сайта в WordPress для динамически генерируемого контента - PullRequest
0 голосов
/ 17 июня 2019

У меня есть веб-сайт WordPress, на котором контент генерируется динамически, когда пользователь прокручивает новые данные, поступающие из базы данных, с приращением переменной страницы, например, такой как

http://testsite.com/?page=2

Теперья хочу создать карту сайта, чтобы я мог проиндексировать все свои динамически сгенерированные страницы

Я пытался это сделать, но проблема в том, что при каждом просмотре прокрутки вниз я создавал карту сайта, есть какой-нибудь элегантный способ сделать это.Я поместил код карты сайта за событием jQuery при прокрутке

Проблема в том, что этот код создает карту сайта при каждой прокрутке с дублирующимися ссылками

      $sitemap .= '<?xml version="1.0" encoding="UTF-8"?>' . '<?xml-stylesheet type="text/xsl" href="' . 
        esc_url( home_url( '/' ) ) . 'sitemap.xsl"?>';
    $sitemap .= "\n" . '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
    $sitemap .= "\t" . '<url>' . "\n" .
        "\t\t" . '<loc>' . esc_url( home_url( '/' ) ) . '</loc>' .
        "\n\t\t" . '<lastmod>' . date( "Y-m-d\TH:i:s", current_time( 'timestamp', 0 ) ) . '</lastmod>' .
        "\n\t\t" . '<changefreq>daily</changefreq>' .
        "\n\t\t" . '<priority>1.0</priority>' .
        "\n\t" . '</url>' . "\n";
    foreach( $result as $row ) {
        $sitemap .= "\t" . '<url>' . "\n" .
            "\t\t" . '<loc>' . $row->ID  . '</loc>' .
            "\n\t\t" . '<lastmod>' . the_time( 'l, F jS, Y' ). '</lastmod>' .
            "\n\t\t" . '<changefreq>Daily</changefreq>' .
            "\n\t\t" . '<priority>0.9</priority>' .
            "\n\t" . '</url>' . "\n";
    }
    $sitemap .= '</urlset>';
    $fp = fopen( ABSPATH . "sitemap.xml", 'w' );
    fwrite( $fp, $sitemap );
    fclose( $fp );
...