コード例 #1
0
 function gglstmp_sitemapcreate()
 {
     global $wpdb, $gglstmp_settings;
     $str_post_type = "";
     foreach ($gglstmp_settings['post_type'] as $val) {
         if ($str_post_type != "") {
             $str_post_type .= ", ";
         }
         $str_post_type .= "'" . $val . "'";
     }
     $taxonomies = array();
     foreach ($gglstmp_settings['taxonomy'] as $val) {
         $taxonomies[] = $val;
     }
     $xml = new DomDocument('1.0', 'utf-8');
     $xml_stylesheet_path = defined('WP_CONTENT_DIR') ? home_url('/') . basename(WP_CONTENT_DIR) : home_url('/') . 'wp-content';
     $xml_stylesheet_path .= defined('WP_PLUGIN_DIR') ? '/' . basename(WP_PLUGIN_DIR) . '/google-sitemap-plugin/sitemap.xsl' : '/plugins/google-sitemap-plugin/sitemap.xsl';
     $xslt = $xml->createProcessingInstruction('xml-stylesheet', "type=\"text/xsl\" href=\"{$xml_stylesheet_path}\"");
     $xml->appendChild($xslt);
     $gglstmppr_urlset = $xml->appendChild($xml->createElementNS('http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset'));
     if (!empty($str_post_type)) {
         $loc = $wpdb->get_results("SELECT `ID`, `post_modified` FROM {$wpdb->posts} WHERE `post_status` = 'publish' AND `post_type` IN (" . $str_post_type . ")");
         if (!empty($loc)) {
             foreach ($loc as $val) {
                 $gglstmppr_url = $gglstmppr_urlset->appendChild($xml->createElement('url'));
                 $loc = $gglstmppr_url->appendChild($xml->createElement('loc'));
                 $permalink = get_permalink($val->ID);
                 $loc->appendChild($xml->createTextNode($permalink));
                 $lastmod = $gglstmppr_url->appendChild($xml->createElement('lastmod'));
                 $now = $val->post_modified;
                 $date = date('Y-m-d\\TH:i:sP', strtotime($now));
                 $lastmod->appendChild($xml->createTextNode($date));
                 $changefreq = $gglstmppr_url->appendChild($xml->createElement('changefreq'));
                 $changefreq->appendChild($xml->createTextNode('monthly'));
                 $priority = $gglstmppr_url->appendChild($xml->createElement('priority'));
                 $priority->appendChild($xml->createTextNode(1.0));
             }
         }
     }
     if (!empty($taxonomies)) {
         foreach ($taxonomies as $value) {
             $terms = get_terms($value, 'hide_empty=1');
             if (!empty($terms) && !is_wp_error($terms)) {
                 foreach ($terms as $term_value) {
                     $gglstmppr_url = $gglstmppr_urlset->appendChild($xml->createElement('url'));
                     $loc = $gglstmppr_url->appendChild($xml->createElement('loc'));
                     $permalink = get_term_link((int) $term_value->term_id, $value);
                     $loc->appendChild($xml->createTextNode($permalink));
                     $lastmod = $gglstmppr_url->appendChild($xml->createElement('lastmod'));
                     $now = $wpdb->get_var("SELECT `post_modified` FROM {$wpdb->posts}, {$wpdb->term_relationships} WHERE `post_status` = 'publish' AND `term_taxonomy_id` = " . $term_value->term_taxonomy_id . " AND {$wpdb->posts}.ID= {$wpdb->term_relationships}.object_id ORDER BY `post_modified` DESC");
                     $date = date('Y-m-d\\TH:i:sP', strtotime($now));
                     $lastmod->appendChild($xml->createTextNode($date));
                     $changefreq = $gglstmppr_url->appendChild($xml->createElement('changefreq'));
                     $changefreq->appendChild($xml->createTextNode('monthly'));
                     $priority = $gglstmppr_url->appendChild($xml->createElement('priority'));
                     $priority->appendChild($xml->createTextNode(1.0));
                 }
             }
         }
     }
     $xml->formatOutput = true;
     if (is_multisite()) {
         $home_url = preg_replace("/[^a-zA-ZА-Яа-я0-9\\s]/", "_", str_replace('http://', '', str_replace('https://', '', home_url())));
         $xml->save(ABSPATH . 'sitemap_' . $home_url . '.xml');
     } else {
         $xml->save(ABSPATH . 'sitemap.xml');
     }
     gglstmp_sitemap_info();
 }
コード例 #2
0
 function gglstmp_sitemapcreate()
 {
     global $wpdb;
     if (isset($_POST['gglstmp_settings'])) {
         $gglstmp_settings['post_type'] = $_POST['gglstmp_settings'];
     } else {
         global $gglstmp_settings;
     }
     $str = "";
     foreach ($gglstmp_settings['post_type'] as $val) {
         if ($str != "") {
             $str .= ", ";
         }
         $str .= "'" . $val . "'";
     }
     $xml = new DomDocument('1.0', 'utf-8');
     if (defined('WP_CONTENT_DIR')) {
         $xml_stylesheet_path = home_url('/') . basename(WP_CONTENT_DIR);
     } else {
         $xml_stylesheet_path = home_url('/') . "wp-content";
     }
     if (defined('WP_PLUGIN_DIR')) {
         $xml_stylesheet_path .= '/' . basename(WP_PLUGIN_DIR) . "/google-sitemap-plugin/sitemap.xsl";
     } else {
         $xml_stylesheet_path .= "/plugins/google-sitemap-plugin/sitemap.xsl";
     }
     $xslt = $xml->createProcessingInstruction('xml-stylesheet', "type=\"text/xsl\" href=\"{$xml_stylesheet_path}\"");
     $xml->appendChild($xslt);
     $urlset = $xml->appendChild($xml->createElementNS('http://www.sitemaps.org/schemas/sitemap/0.9', 'urlset'));
     if (!empty($str)) {
         $loc = $wpdb->get_results("SELECT ID, post_modified, post_status, post_type, ping_status FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type IN (" . $str . ")");
         foreach ($loc as $val) {
             $url = $urlset->appendChild($xml->createElement('url'));
             $loc = $url->appendChild($xml->createElement('loc'));
             $permalink = get_permalink($val->ID);
             $loc->appendChild($xml->createTextNode($permalink));
             $lastmod = $url->appendChild($xml->createElement('lastmod'));
             $now = $val->post_modified;
             $date = date('Y-m-d\\TH:i:sP', strtotime($now));
             $lastmod->appendChild($xml->createTextNode($date));
             $changefreq = $url->appendChild($xml->createElement('changefreq'));
             $changefreq->appendChild($xml->createTextNode('monthly'));
             $priority = $url->appendChild($xml->createElement('priority'));
             $priority->appendChild($xml->createTextNode(1.0));
         }
         $xml->formatOutput = true;
     }
     if (is_multisite()) {
         $home_url = preg_replace("/[^a-zA-ZА-Яа-я0-9\\s]/", "_", str_replace('http://', '', str_replace('https://', '', home_url())));
         $xml->save(ABSPATH . 'sitemap_' . $home_url . '.xml');
     } else {
         $xml->save(ABSPATH . 'sitemap.xml');
     }
     gglstmp_sitemap_info();
 }