Используйте wp-load () и wp_head (), чтобы отобразить заголовок страницы вне WordPress

Я использую wp-load () для загрузки базовой среды WP, а затем без каких-либо проблем читаю некоторую информацию из БД.

Но теперь мне нужно отобразить полный заголовок для страницы, включая плагин Yoast SEO . После вызова wp-load () и получения моих данных из БД я вызываю wp_head (), чтобы отобразить заголовок, но вывод в основном пуст, поскольку нормальная среда WP не была загружена. Как загрузить среду WP до такой степени, что все плагины без проблем.

Я пробовал разные апробаши

  • вызов wp('p=83'); для инициализации среды данными правильной страницы (ID = 83)
  • инициализация $wp_query и $post vars вручную с теми же данными, которые они получат при обычном вызове страницы
  • пытаясь найти больше глобальных структур данных, которые установлены в обычном вызове, но не с wp_load

но нет любви.

РЕДАКТИРОВАТЬ:

Точная ситуация такова:

 /test.php /wordpress/{all the wp stuff} 

в моем test.php я включаю wp_load.php

 require_once("wordpress/wp-load.php"); 

затем я пробовал различные версии, в том числе два решения, даваемые fischi,

  • используя wp_head непосредственно в test.php
  • используя get_header () непосредственно в test.php
  • помещая его в файл шаблона и вызывая это через get_header ('justthehead')

Но ничего не работает!

Моя проблема была не в том, что я не мог выполнить функцию wp_head (), которая работала с самого начала, но очевидно, что wp_load недостаточно для правильной работы некоторых плагинов.

В моем случае я пытаюсь заставить плагин Yoast SEO работать, но он не показывает мне тот же результат, что и при вызове «обычный путь» внутри шаблона для страницы p = 83.

Поэтому я получаю вывод wp_head, но он не является полным, поскольку данные из плагина отсутствуют.

Вы ищете функцию get_header() .

wp_head() – это внутренняя функция WordPress для выполнения действий внутри раздела главы (перечисление скриптов, стилей, метаданных и т. д.).

Реальный вывод HTML поступает из функции get_header() , которая включает get_header() header.php вашей темы.

Я полагаю, что вы действительно не хотите только эту часть заголовка, так как он оставляет много тегов открытым, поэтому я хотел бы создать файл в вашей папке темы: header-justthehead.php

Вы можете вызвать этот файл с помощью простой строки:

 get_header( 'justthehead' ); 

и вы полностью контролируете вывод для своего настраиваемого заголовка, и вам не нужно возиться с заголовком вашего веб-сайта. Единственное, что вам нужно позаботиться, это то, что загружен правильный пост. Определите $args для вашего query_posts() , и это должно сработать для вас. Никогда не забывайте wp_reset_query() – даже если вам это не нужно в этом случае.

 include( 'wp-load.php' ); // loads WordPress Environment query_posts( $args ); // load your desired Post/Page if ( have_posts() ) : while ( have_posts() ) : the_post(); // Setup the Post/Page get_header( 'justthehead' ); // Get your custom header-justthehead.php, containing your wp_head() call endwhile; endif; // quit the loop wp_reset_query(); // clean it up 

Еще один способ сделать это – сделать переход в файл шаблона.

Допустим, у вас есть ваш page.php вызывающий get_header() .

 <?php get_header(); ?> //Template Stuff 

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

 <?php if ( $_GET['justtheheader'] == 'true'] ) { get_header( 'justtheheader' ); } else { get_header(); } ?> 

В вашем header-justtheheader.php вы инициализируете заголовок и выходите из die() (важно, не используйте wp_die() , поскольку это обеспечивает дополнительный вывод HTML.

Вы можете вызывать каждую страницу для заголовка с помощью yourdomain.com/pagetoshow?justtheheader=true .