0
get_posts()
機能を使用してカスタム投稿タイプのすべての投稿を取得しているとき、私は取得したい投稿が300件であっても常にメモリサイズ制限に達しますデータベース。WordPressカスタム投稿タイプのすべての投稿を取得する
メモリを増やすことはオプションではなく、ページネーションも有効にしません。
これを引き起こす原因は何か、これをどのように解決できますか。これらの投稿のそれぞれから、後でメタデータを取得し、2つの配列/オブジェクトとそれ以上のものに分割する必要があります。ページリクエストごとに5000件以上の投稿/レコードを処理できる必要があります。
ヒント、アイデア、提案、その他何か?
まず試してみてください。
$args = array(
'posts_per_page' => 300,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'title',
'order' => 'ASC',
'post_type' => 'partners',
'post_status' => 'publish',
'suppress_filters' => true,
/*'meta_key' => 'partner-submission-status',
'meta_value' => 'goedgekeurd',*/
);
$posts = get_posts($args);
var_dump(count($posts));
2回目の試行:
$query = $wpdb->get_results("
SELECT p.ID, p.post_title
FROM wp_posts as p
INNER JOIN wp_postmeta as m
on p.ID = m.post_id
WHERE p.post_type = 'partners' AND
p.post_status = 'publish'
");
var_dump(count($query));die;
しかし、それらの両方でも(私はget_postsで動作するようにしようとしたvar_dump
に得ることはありません)関数と生のクエリではどちらもメモリサイズ制限を超えます。私は元の投稿にいくつかのコードを追加します。 –
wp-configファイルからWP_MEMORY_LIMITを増やしてみましたか? – DpEN
問題は、76個のカスタムフィールド(メタデータ)があるため、取得するデフォルトのクエリが50000+レコードで、システムがクラッシュするためです。そこで、これらのメタデータを別々のデータベーステーブルにマップして、パートナーごとにレコード(生のクエリ)にしか到達しないように、その投稿タイプの各パートナーごとに1つの行があるようにする必要があります。それに対する提案はありますか? –