使用wp-Load()和wp_head()在WordPress外部呈现页面页眉

时间:2015-04-24 作者:Larzan

我使用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的输出,但它并不完整,因为插件中的数据丢失了。

2 个回复
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

SO网友:fischi

另一种方法是在模板文件中进行切换。

假设你有page.php 调用get_header() 作用

<?php get_header(); ?>

    //Template Stuff
如果将开关置于此调用之前,则可以使其像这样工作,设置一个参数来定义要包含的标头。

<?php
    if ( $_GET[\'justtheheader\'] == \'true\'] ) {
        get_header( \'justtheheader\' );
    } else {
        get_header();
    }
?>
在您的header-justtheheader.php 初始化标头并退出qith adie() (重要信息,请勿使用wp_die(), 因为这会提供额外的HTML输出。

您可以使用yourdomain.com/pagetoshow?justtheheader=true.

结束