致命错误:对非对象调用成员函数get_page_permastruct()

时间:2015-01-29 作者:wassereimer

我得到这个错误

Fatal error: Call to a member function get_page_permastruct() on a non-object in C:\\xampp\\htdocs\\wordpress\\wp-includes\\link-template.php on line 358
当我调用此函数时

function pn_create_page() {
    global $wpdb;
    $check_page = $wpdb->get_var("SELECT option_value FROM ".$wpdb->prefix."pn_options WHERE id = \'10\'" );

    // if no page create one
    if ($check_page==\'\'){
        $pagedata = array(
        \'post_content\'   => \'Page content will go here.\',
        \'post_title\'     => \'Page Title\',
        \'post_status\'    => \'publish\',
        \'post_type\'      => \'page\',
        \'post_author\'    => 1,
        \'ping_status\'    => \'closed\',
        \'comment_status\' => \'closed\'
        );
        $post_id = wp_insert_post( $pagedata );
        $wpdb->update($wpdb->prefix.\'pn_options\', array(\'option_value\'=>$post_id), array(\'id\'=>\'10\'));

    // if page excist do nothing    
    } else {
        return;
    }
}
导致错误的线是

$post_id = wp_insert_post( $pagedata );
我也收到了这个通知

Notice:  Trying to get property of non-object in C:\\xampp\\htdocs\\wordpress\\wp-includes\\post.php on line 3688
来自同一行。。。。。

不知道怎么了。。。。有什么想法吗?

我想直接从插件创建wordpress页面。。。。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

加载插件文件时,WordPress环境尚未完全初始化,此时安全运行与core交互的代码几乎总是为时过早。

WordPress通过一个包含自己的一组操作和过滤器的进程来实现其初始状态,因此插件会在此之前加载,以允许它们挂接到该进程中。

动作和过滤器系统是核心/插件交互的基础,插件所做的一切都将与动作或过滤器联系在一起。这是一个简单的系统,提供了整个请求过程的路线图,允许您管理插件代码执行的顺序。

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x