Использовал правила перезаписи для достижения текущей настройки URL, но мне нужно, чтобы эти комбинации также были добавлены в карту сайта.'collection' - это просто атрибут продукта с таксономией pa_collection
Текущая настройка URL
https://*****.com/collection/%COLLECTION-TERM%/product-tag/%PRODUCT-TAG-TERM%
<?php
/**
* Create a new custom yoast seo sitemap
*/
add_filter( 'wpseo_sitemap_index', 'ex_add_sitemap_custom_items' );
add_action( 'init', 'init_wpseo_do_sitemap_actions' );
// Add custom index
function ex_add_sitemap_custom_items(){
global $wpseo_sitemaps;
$date = $wpseo_sitemaps->get_last_modified('CUSTOM_POST_TYPE');
$smp ='';
$smp .= '' . "\n";
$smp .= '' . site_url() .'/CUSTOM_KEY-sitemap.xml' . "\n";
$smp .= '' . htmlspecialchars( $date ) . '' . "\n";
$smp .= '' . "\n";
return $smp;
}
function init_wpseo_do_sitemap_actions(){
add_action( "wpseo_do_sitemap_CUSTOM_KEY", 'ex_generate_origin_combo_sitemap');
}
function ex_generate_origin_combo_sitemap(){
global $wpdb;
global $wp_query;
global $wpseo_sitemaps;
$post_type = 'archive';
wp_reset_query();
$args = array(
'posts_per_page' => -1,
'orderby' => 'post_date',
'order' => 'DESC',
'post_type' => $post_type,
'post_status' => 'publish',
'suppress_filters' => true
);
query_posts( $args );
wp_reset_postdata();
//echo '';print_r($url);echo '
';$ posts_array = get_posts ($ args);$ output = '';if (! empty ($ posts_array)) {$ chf = 'weekly';$ pri = 1,0;foreach ($ posts_array as $ p) {$ p-> post_type = $ post_type;$ p-> post_status = 'publish';$ p-> filter = 'sample';$ url = array ();if (isset ($ p-> post_modified_gmt) && $ p-> post_modified_gmt! = '0000-00-00 00:00:00' && $ p-> post_modified_gmt> $ p-> post_date_gmt) {$ url ['mod'] = $ p-> post_modified_gmt;} else {if ('0000-00-00 00:00:00'! = $ p-> post_date_gmt) {$ url ['mod'] = $ p-> post_date_gmt;} else {$ url ['mod'] = $ p-> post_date;}} $ url ['loc'] = site_url (). '/ sample / all /'.$ p-> post_name;$ url ['chf'] = $ chf;$ url ['pri'] = $ pri;$ output. = $ wpseo_sitemaps-> sitemap_url ($ url);// Очистим post_meta и кэш термина для поста, так как он нам больше не нужен.// wp_cache_delete ($ p-> ID, 'post_meta');// clean_object_term_cache ($ p-> ID, $ post_type);}} // Получение последней измененной даты$ post_type);$ mod = $ wpdb-> get_var ($ sql);// Создание URL-адресов терминов $ Practitioner_terms = get_terms ('pa_collection', 'orderby = count & hide_empty = 0');$ Practitioner_termss = get_terms ('product_tag', 'orderby = count & hide_empty = 0');if (! empty ($ Practitioner_terms)) {$ pri = 1;$ chf = 'еженедельно';foreach ($ Practitioner_terms как $ key => $ term) {$ url = array ();$ url ['loc'] = site_url (). '/ collection /'.$ term-> slug.' / product-tag / ';$ url ['pri'] = $ pri;$ url ['mod'] = $ mod;$ url ['chf'] = $ chf;$ output. = $ wpseo_sitemaps-> sitemap_url ($ url);} foreach ($ Practitioner_termss как $ key => $ term) {$ url = array ();$ url ['loc'] = site_url (). '/ product-tag /'.$ term-> slug;$ url ['pri'] = $ pri;$ url ['mod'] = $ mod;$ url ['chf'] = $ chf;$ output. = $ wpseo_sitemaps-> sitemap_url ($ url);}}
В этом разделе мне нужно объединить таксономии.Пока у меня есть все термины для обеих таксономий на одной странице, но мне нужно объединить их для создания всех возможных комбинаций.
$practitioner_terms = get_terms( 'pa_collection', 'orderby=count&hide_empty=0' );
$practitioner_termss = get_terms( 'product_tag', 'orderby=count&hide_empty=0' );
if( !empty( $practitioner_terms ) ){
$pri = 1;
$chf = 'weekly';
foreach ($practitioner_terms as $key => $term ){
$url = array();
$url['loc'] =site_url().'/collection/'.$term>slug.'/product-tag/';
$url['pri'] = $pri;
$url['mod'] = $mod;
$url['chf'] = $chf;
$output .= $wpseo_sitemaps->sitemap_url( $url );
}
foreach ($practitioner_termss as $key => $term ){
$url = array();
$url['loc'] = site_url().'/product-tag/'.$term->slug;
$url['pri'] = $pri;
$url['mod'] = $mod;
$url['chf'] = $chf;
$output .= $wpseo_sitemaps->sitemap_url( $url );
}
}