Nemozar
@Nemozar
Php developer

Wordpress хук на вызов функции без создания страницы?

Добрый день.

Пробовал создать свои страницы в Wordpress. Идеального решения не нашел. Получилось перехватить url и вставить туда текст php. Но заголовок и т.п. все равно оставались "страница не найдена"

Что мне надо:
1. по указанному пути в url (к примеру site.ru/myfunction) открывалась на выполнение функция function myfunction() в базовом шаблоне index.php (без создания "страниц" с таким именем в админке)
2. сделать этот перехват в плагине.

Сейчас реализовал через шорткоды. Но это очень не удобно с точки зрения программирования. Т.е. проще реализовать готовый кусок кода, чем создавать страницу в нее вставлять шорткод и т.п.
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 1
@aylo
я бы сделал че т типо того

add_action( 'wp', 'generic_content' );
function generic_content() {
	global $wp_query;

	if ( $wp_query->is_404 ) {
		status_header( 200 );
		$post_title               = 'change me';
		$post_content             = 'change me';
		
		$post                     = new stdClass();
		
		$post->ID                 = - 1;
		$post->post_content       = $post_content;
		$post->post_status        = 'publish';
		$post->post_title         = $post_title;
		$post->post_type          = 'generic';
		$post->post_name          = $post_title;
		$post->comment_status     = 'closed';
		$post->ping_status        = 'closed';
		$post->post_password      = '';
		
		$wp_query->found_posts    = 1;
		$wp_query->is_404         = false;
		$wp_query->is_posts_page  = 1;
		$wp_query->is_single      = 1;
		$wp_query->is_singular    = true;
		$wp_query->max_num_pages  = 1;
		$wp_query->page           = false;
		$wp_query->post           = $post;
		$wp_query->post_count     = 1;
		$wp_query->posts          = array( $post );
		$wp_query->queried_object = $post;
	}
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы