Эмуляция статических страниц в WordPress

Когда для сайта не совсем подходит WordPress CMS, а очень хочется – разработчики идут на всякие хитрости, благо WordPress их предоставляет с головой.

Например выполнение собственных запросов уже в файлах темы ( query_posts).

Для этого обычно создают в панели управления статическую страницу, а в директории с темой – или же кастомную тему (/** Template name **/) или файл с именем page-(pageSlug).php или что еще хуже – page-(pageId).php.  Для справок смотрите иерархию файлов в шаблонах WP

В этом подходе есть значительный минус – заказчик сайта, которому вы скорее всего передадите доступ к панели управления, может нечаянно или по незнанию удалить страницу чем нарушит работу сайта в целом.

Код:

post_title = get_query_var('pseudo_static_title');
		
		$wp_query->queried_object = $queried_object;
		$wp_query->queried_object_id = 1;
		$wp_query->found_posts = 1;
		$wp_query->is_page = 1 ;
		$wp_query->is_home = 0 ;
		$wp_query->post_count = 1;
		
		$template = array( "page-".get_query_var('pseudo_static_page').".php" );	
		locate_template( $template, true );
		die();
		
	}	
}

function impress_add_rewrite_rule($rules) {
	global $impress_pages;
	
	$newrules = array();
	
	$newrules['dnepropetrovsk/events-archive/?$'] = 
		'index.php?pseudo_static_page=events-archive&pseudo_static_param1=dnepropetrovsk&pseudo_static_title='.urlencode('Архив событий | Днепропетровск');
	
	$newrules['dnepropetrovsk/events-calendar/?$'] = 
		'index.php?pseudo_static_page=events-calendar&pseudo_static_param1=dnepropetrovsk&pseudo_static_title='.urlencode('Календарь событий | Днепропетровск');	
	
	$newrules['dnepropetrovsk/event-announcements/?$'] = 
		'index.php?pseudo_static_page=event-announcements&pseudo_static_param1=dnepropetrovsk&pseudo_static_title='.urlencode('Анонс событий | Днепропетровск');	
	
	$newrules['/?$'] = 
		'index.php?pseudo_static_page=event-announcements&pseudo_static_param1=dnepropetrovsk&pseudo_static_title='.urlencode('Анонс событий | Днепропетровск');
	
	$newrules['dnepropetrovsk/weekly-events/?$'] = 
		'index.php?pseudo_static_page=weekly-events&pseudo_static_param1=ukraine&pseudo_static_title='.urlencode('Еженедельные события | Днепропетровск');
	
	$newrules['dnepropetrovsk/reports/?$'] = 
		'index.php?pseudo_static_page=reports&pseudo_static_param1=dnepropetrovsk&pseudo_static_title='.urlencode('Отчеты | Днепропетровск');
	
	
	$newrules['ukraine/events-archive/?$'] = 
		'index.php?pseudo_static_page=events-archive&pseudo_static_param1=ukraine&pseudo_static_title='.urlencode('Архив событий | Украина');
	
	$newrules['ukraine/events-calendar/?$'] = 
		'index.php?pseudo_static_page=events-archive&pseudo_static_param1=ukraine&pseudo_static_title='.urlencode('Календарь событий | Украина');
	
	return $newrules + $rules;
}


?>

Leave a Reply

Your email address will not be published. Required fields are marked *