WP_LOAD,WordPress AJAX的缩写

时间:2015-03-27 作者:pulla

我们一直在使用wp load。php用于ajax加载。它用于在单击“预览”时显示弹出窗口。正如你所知,即使是几条短信,也需要很长的时间(3-4秒)。

我们已经搜索并发现“short init”是使其更快加载的解决方案。

但要获得wp函数似乎有点困难。当我们使用“wp load”时,我们使用了这些函数。

    Wordpress functions
    =================================
    get_post_meta
    apply_filters
    $wpdb( wp_prefix ) ===> to find multi network prefix
    get_option
    wp_upload_dir
    get_current_blog_id
    _e, __ 
    get_userdata
    get_post
    get_the_post_thumbnail
    wp_get_attachment_image_src
    get_permalink
    wp_get_object_terms
    wp_remote_retrieve_body
    wp_remote_get

    WPML
    ====================================
    icl_get_languages
如何调用/声明这些函数以使用shortinit函数。我们确实需要快速加载ajax,并且需要使用wordpress函数。

这是我们的代码示例。这是正确的方法吗?

    <?php
    ini_set(\'html_errors\', 0);
    define(\'SHORTINIT\', true);

    require_once $_SERVER[\'DOCUMENT_ROOT\' ] . "/wp-load.php";
    require_once ABSPATH . WPINC . \'/formatting.php\';
    require_once ABSPATH . WPINC . \'/meta.php\';
    require_once ABSPATH . WPINC . \'/post.php\';
    require_once ABSPATH . WPINC . \'/user.php\';
    require_once ABSPATH . WPINC . \'/capabilities.php\';

    header( \'Content-Type: application/json; charset:utf-8\' );

    $wpk_result             = Array( "state" => "fail" );
    if( $post_id = $_REQUEST["post_id"] )
    {
        $post                   = get_post( $post_id );
        $wpk_this_author        = new WP_User( $post->author );
        $wpk_this_thumb     = \'\';

        // Other Informations
        $wpk_result         = Array(
            \'state\'             => \'success\'
            , \'post_id\'         => $post->ID
            , \'post_title\'      => $post->post_title
            //, \'permalink\'     => get_permalink( $post->ID )
            , \'thumbnail\'       => $wpk_this_thumb
            , \'phone\'           => get_post_meta( $post->ID, \'jv_item_phone\', true )
            , \'website\'         => get_post_meta( $post->ID, \'jv_item_website\', true )
            , \'email\'           => get_post_meta( $post->ID, \'jv_item_email\', true )
            , \'address\'         => get_post_meta( $post->ID, \'jv_item_address\', true )
            , \'author_name\'     => $wpk_this_author->display_name
        );
    }
    die( json_encode( $wpk_result ) );
我们需要不断添加文件名来定义我们需要的函数?为了获取thumnail图像,它需要我们需要的很多函数文件。

我们还检查了“主题检查器”插件。ini\\u set(\'html\\u errors\',0);这是一种糟糕的做法。

1 个回复
SO网友:kovshenin

您应该使用管理ajax。php为您的AJAX请求和WordPress提供了非常好的包装器和操作来帮助您做到这一点。

就性能而言,3-4s相当苛刻。WordPress通常会在大约300ms的开箱时间内提供一个未缓存的请求,因此其他一些主题或插件可能会增加这段时间,可能是在初始化期间做一些愚蠢而耗时的事情。

此外,调用admin ajax。php也可以立即从缓存中缓存和提供服务,尤其是因为您唯一的差异似乎是一个帖子id。

最后,您可能应该检查$post, 因为给定您当前的代码,任何人都可以读取您为数据库中的任何帖子提供的字段,包括私人帖子、受保护帖子、草稿、日程帖子、WooCommerce项目、调试数据或以帖子类型存储内容的插件日志等。

结束