Я пытаюсь изменить post ids, чтобы быть инкрементальным, игнорируя сообщения, которые имеют настраиваемое поле под названием «foldout». Я не могу заставить его работать, и я не получаю никаких ошибок php. У меня есть это в конце моего файла functions.phpИзменить идентификатор сообщения, чтобы быть инкрементным, игнорируя сообщения с настраиваемым полем
function updateNumbers() {
/* numbering the published posts: preparation: create an array with the ID in sequence of publication date,/
/save the number in custom field 'incr_number' of post with ID/
/to show in post (within the loop) use <?php echo get_post_meta($post->ID,'incr_number',true); ?>
/alchymyth 2010 */
global $wpdb;
$querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.post_status = 'publish' AND wposts.post_type = 'post' AND wpostmeta.meta_key != 'foldout' ";
$pageposts = $wpdb->get_results($querystr, OBJECT);
$counts = 5 ;
if ($pageposts):
foreach ($pageposts as $post):
setup_postdata($post);
$counts++;
add_post_meta($post->ID, 'incr_number', $counts, true);
update_post_meta($post->ID, 'incr_number', $counts);
endforeach;
endif;
}
add_action ('publish_post', 'updateNumbers');
add_action ('deleted_post', 'updateNumbers');
add_action ('edit_post', 'updateNumbers');
Я сузил проблему вниз к строке запроса, упомянутой здесь: https://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query#Query_based_on_Custom_Field_and_Category
я могу получить эту работу:
$querystr = "SELECT $wpdb->posts.*
FROM $wpdb->posts
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post' ";
, но не это:
$querystr = "SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key != 'foldout'
AND wposts.post_type = 'post' ";
Что я изменил от Пример «Запрос на основе пользовательского поля и сортировка по значению».