私は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);
問題はおそらくあなたのget_the_excerpt()
関数に付随する(非常に遅い)コールバックでしょう。
アタッチされたコールバックを調べるには、単にグローバルを調べます。
// Best hooked to `shutdown`
echo '<pre>'.var_export( $GLOBALS['wp_filters']['get_the_excerpt'], true ).'</pre>';
それから、それらすべてのコールバックを取り除きます。
POSTオブジェクトに直接アクセスしたい場合は、グローバル$post
を使用して、使用されているpostオブジェクトに直接アクセスできます。
while( have_posts() ){
the_post();
global $post;
echo $post->post_excerpt;
}
あなたがシステム上のフィルタまたは何か他のもののために問題を経験しているならば、これはそれを直すべきです。