Intereting Posts
Преобразование mysql в $ wpdb Пользовательская разбивка на страницы в коротком коде с WP_Query Проверка проверки почты, если назначен дочерний термин Вычислить все значения настраиваемого поля в цикле post locate_template с несколькими категориями? wp_enqueue_script был вызван неправильно. Проблема при обновлении активных плагинов панели администратора WordPress. Удаление настраиваемых полей при удалении плагина Получить сообщения из текущей категории? Как получить категорию / тег в URL-адресах для ссылок на страницы? Применение шаблонов и принципов OO для разработки плагинов Не разрешать пользователям создавать новые сообщения и страницы Вход через псевдоним Пользовательский тип сообщения. Текущий элемент меню, не применяемый к странице пользовательского типа сообщений. Как найти время последнего просмотра? Тема континуума – длина выдержки

Как визуализировать единственный шаблон сообщения с именем сообщения?

Я вызываю страницы с помощью Ajax, и у меня есть этот код в functions.php чтобы определить, какая страница вызывается, а затем вынести соответствующий шаблон:

 function ajax_callback() { if( isset( $_POST['href'] ) ) { $pageId = preg_match( '/^http:\/\/.+\/\?page_id=\d+$/', $_POST['href'] ) ? substr( strrchr( $_POST['href'], '=' ), 1 ) : '8' ; if( $pageId === '8' ) get_template_part('home-ajax'); elseif( $pageId === '22' ) get_template_part('reviews-rvw-ajax'); elseif( $pageId === '6' ) get_template_part('noticias-news-ajax'); elseif( $pageId === '109' ) get_template_part('entrevistas-ajax'); } } 

Это прекрасно работает, но теперь я хочу также называть отдельные сообщения. Я получаю тип сообщения следующим образом:

 $pageId = preg_match( '/^http:\/\/.+\/\?page_id=\d+$/', $_POST['href'] ) ? substr( strrchr( $_POST['href'], '=' ), 1 ) : 'no-page' ; if( $pageId === 'no-page' && preg_match( '/^http:\/\/.+\/\?news=.+$/', $_POST['href'] ) ) { $newSlug = substr( strrchr( $_POST['href'], '=' ), 1 ); } elseif ( $pageId === 'no-page' && preg_match( '/^http:\/\/.+\/\?reviews=.+$/', $_POST['href'] ) ) { $reviewSlug = substr( strrchr( $_POST['href'], '=' ), 1 ); } if( $pageId !== 0 ) { if( $pageId === '8' ) get_template_part('home-ajax'); elseif( $pageId === '22' ) get_template_part('reviews-rvw-ajax'); elseif( $pageId === '6' ) get_template_part('noticias-news-ajax'); elseif( $pageId === '109' ) get_template_part('entrevistas-ajax'); } elseif( $newSlug !== '' ) { //here I have to get the single post template // eg $newSlug = slug-post-name, and post_type = 'news' } 

Но я не знаю, как назвать этот единственный шаблон сообщения по имени slug. Мне нужно вызвать шаблон single.php без заголовка и single.php колонтитула, чтобы я мог:

get_template_part('single-ajax');

 //single-ajax.php <?php // Start the Loop. while ( have_posts() ) : the_post(); /* * Include the post format-specific template for the content. If you want to * use this in a child theme, then include a file called called content-___.php * (where ___ is the post format) and that will be used instead. */ get_template_part( 'content', get_post_format() ); // Previous/next post navigation. twentyfourteen_post_nav(); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) { comments_template(); } endwhile; 

Но не работает, потому что я должен определить объект запроса:

  <?php $temp = $wp_query; // assign ordinal query to temp variable for later use $wp_query = null; $newSlug = substr( strrchr( $_POST['href'], '=' ), 1 ); $wp_query = new WP_Query( array( 'name' => $newSlug ) ); if($wp_query->have_posts()) { while ( $wp_query->have_posts() ) : $wp_query->the_post(); // Start the Loop. /* * Include the post format-specific template for the content. If you want to * use this in a child theme, then include a file called called content-___.php * (where ___ is the post format) and that will be used instead. */ get_template_part( 'content', get_post_format() ); // Previous/next post navigation. twentyfourteen_post_nav(); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) { comments_template(); } endwhile; } die(); 

Но это не отображает шаблон сообщения. Действительно, не начинает выполнять цикл. Любая идея о том, что происходит, или более простой способ достичь этого?

Solutions Collecting From Web of "Как визуализировать единственный шаблон сообщения с именем сообщения?"