web-dev-qa-db-ja.com

JSONファイルの生成時にget_the_excerpt()の実行に28秒と599ミリ秒がかかるのはなぜですか

私はJSONフィードを生成するために以下のコードを使用しています。抜粋を投稿から抽出する必要がありますが、get_the_excerpt()を実行した場合、ローカルサーバーで実行するのに28秒かかります(get_the_excerpt()を 'hi'に変更した場合の599ミリ秒)。

誰がこれがそんなに時間がかかるのか、そしてそれをもっと速くロードするために私ができることができる理由を何か知っていますか?これは私が使用しているコンピュータ上の私のローカルWebサーバー上にあるので、ネットワークの問題によるものではありません。

$json = array();

while ( have_posts() ) {
  the_post();
  $yo = array('title' => get_the_title(), 'excerpt' => get_the_excerpt());
}

$json[] = $yo;
$json = json_encode($json);
1
user1462

問題はおそらくあなたのget_the_excerpt()関数に付随する(非常に遅い)コールバックでしょう。

アタッチされたコールバックを調べるには、単にグローバルを調べます。

// Best hooked to `shutdown`
echo '<pre>'.var_export( $GLOBALS['wp_filters']['get_the_excerpt'], true ).'</pre>';

それから、それらすべてのコールバックを取り除きます。

3
kaiser

POSTオブジェクトに直接アクセスしたい場合は、グローバル$postを使用して、使用されているpostオブジェクトに直接アクセスできます。

while( have_posts() ){
    the_post();

    global $post;
    echo $post->post_excerpt;
}

あなたがシステム上のフィルタまたは何か他のもののために問題を経験しているならば、これはそれを直すべきです。

2
Tyler Carter