Как известно в WP можно получить архив дат только для всех записей, а указать конкретную категорию возможности нет...
Более того, нет ни одного поддерживаемого плагина для этого и практически ни одного топика нигде - за исключением постов 10 летней давности которые не работают... Либо я чего то не знаю, и все таки я могу получить архив дат категории в которой нахожусь из коробки, или я не понимаю почему никто и никогда на протяжении 10 лет этого не сделал?
Есть вот такой но почему о не рабочий код, подскажите плиз, что где поправить, чтобы заработало ?
В functions.php
	
	
	
		
В нужном месте в шаблоне
	
	
	
		
Ссылка формируется /2022/?cat=46
но при переходе архив этой категории не открывается
Буду рад любой помощи ..
				
			Более того, нет ни одного поддерживаемого плагина для этого и практически ни одного топика нигде - за исключением постов 10 летней давности которые не работают... Либо я чего то не знаю, и все таки я могу получить архив дат категории в которой нахожусь из коробки, или я не понимаю почему никто и никогда на протяжении 10 лет этого не сделал?
Есть вот такой но почему о не рабочий код, подскажите плиз, что где поправить, чтобы заработало ?
В functions.php
		Код:
	
	add_filter('getarchives_where', 'custom_archives_where', 10, 2);
add_filter('getarchives_join', 'custom_archives_join', 10, 2);
function custom_archives_join($x, $r) {
    global $wpdb;
    $cat_ID = $r['cat'];
        if (isset($cat_ID)) { return $x . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)";
    } else {
        return $x;
    }
}
function custom_archives_where($x, $r) {
    global $wpdb;
    $cat_ID = $r['cat'];
    if (isset($cat_ID)) {
        return $x . " AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id IN ($cat_ID)";
     } else {
         $x;
    }
}
function wp_get_cat_archives($opts, $cat) {
    $child_cats = get_term_children($cat, 'category');
    $child_cats[] = $cat;
    $cat_id = implode(',', $child_cats);
    $args = wp_parse_args($opts, array('echo' => '1')); // default echo is 1.
    $echo = $args['echo'] != '0'; // remember the original echo flag.
    $args['echo'] = 0;
    $args['cat'] = $cat_id;
    $tag = ($args['format'] === 'option') ? 'option' : 'li';
    $archives = wp_get_archives(build_query($args));
    $archs = explode('</'.$tag.'>', $archives);
    $links = array();
    foreach ($archs as $archive) {
        $link = preg_replace("/='([^']+)'/", "='$1?cat={$cat}'", $archive);
        array_push($links, $link);
    }
    $result = implode('</'.$tag.'>', $links);
    if ($echo) {
        echo $result;
    } else {
        return $result;
    }
}В нужном месте в шаблоне
		Код:
	
	<?php $cat_ID = $term->term_id; wp_get_cat_archives('type=yearly', $cat_ID);?>Ссылка формируется /2022/?cat=46
но при переходе архив этой категории не открывается
Буду рад любой помощи ..
			
				Последнее редактирование: 
			
		
	
								
								
									
	
								
							
							