我使用wp-load()加载基本的wp环境,然后从数据库中读取一些信息,没有任何问题。
但现在我需要呈现页面的完整标题,包括Yoast SEO 插件。调用wp-load()并从DB获取数据后,我调用wp\\u head()来呈现标头,但输出基本上是空的,因为没有加载正常的wp环境。如何加载WP环境,使所有插件都没有任何问题。
我试过各种各样的方法
呼叫wp(\'p=83\');
使用正确页面(ID=83)的数据初始化环境$wp_query
和$post
VAR手动使用在正常页面调用中获得的相同数据,试图找到更多在正常调用中设置但不使用wp\\U load但不使用love的全局数据结构。
编辑:
因此,具体情况如下:
/test.php
/wordpress/{all the wp stuff}
在我的测试中。php I包括wp\\u加载。php
require_once("wordpress/wp-load.php");
然后我尝试了各种版本,包括fischi给出的两种解决方案,
在测试中直接使用wp\\U头。php直接在测试中使用get\\u header()。php将其放在模板文件中,并通过get\\u header(\'justthehead\')调用它,但没有任何效果!
我的问题不是我不能执行wp\\u head()函数,它从一开始就在工作,而是wp\\u负载显然不足以让一些插件正常工作。
在我的例子中,我尝试让Yoast SEO插件工作,但它并没有显示与在页面p=83的模板内以“正常方式”调用时相同的输出。
所以我确实得到了wp\\u head的输出,但它并不完整,因为插件中的数据丢失了。
SO网友:fischi
您正在查找函数get_header()
.
wp_head()
是WordPress的内部功能,用于在head部分内进行操作(列出脚本、样式、元数据等)。
真正的HTML输出来自函数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