Добавьте таксономические комбинации в YOAST карту сайта - PullRequest
0 голосов
/ 19 марта 2019

Использовал правила перезаписи для достижения текущей настройки 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 );
    }
}

1 Ответ

0 голосов
/ 20 марта 2019

Разобрался с решением, которое работает, может быть полезным для других ...

$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 ){
        foreach ($practitioner_termss as $key => $terms ){
        $url = array();
        $url['loc'] = site_url().'/collection/'.$term->slug.'/product-tag/'.$terms->slug;
            $url['pri'] = $pri;
            $url['mod'] = $mod;
            $url['chf'] = $chf;
            $output .= $wpseo_sitemaps->sitemap_url( $url );

    }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...