Получить id всех страниц с определенным доп полем.

djdiplomat
На сайте с 05.08.2009
Offline
136
863

Wordpress и MagicFields

Как получить ID всех страниц у которых заполнено конкретное дополнительное поле.

Я сделал так. Но сердцем чую, что есть путь в 10 раз короче.

$article_thumb_connect = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Не могу соединиться с MySQL.");
mysql_select_db(DB_NAME) or die("Не могу подключиться к базе.");
$article_thumb_query = "SELECT ID FROM `wp_posts` WHERE post_type='page' AND post_status='publish'";
$article_thumb_res = mysql_query($article_thumb_query);
while($article_thumb_row = mysql_fetch_array($article_thumb_res))
{
$article_thumb_array[] = $article_thumb_row['ID'];
}

foreach ($article_thumb_array as $value) {
echo "<b>$value</b><br>";

if (get (procent, $group_index=1, $field_index=1,$post_id=$value) == "" )
{echo 'Нужное допполе отсутствует!';}

else {echo 'Доп поле procent заполнено!'; $id_magic_fields[] = $value;}

}
Хелпзонович
На сайте с 15.06.2005
Offline
133
#1

А почему сразу SQL не вытащить? Если я правильно задачу понял -

SELECT ID FROM `wp_posts` WHERE post_type='page' AND post_status='publish' and procent is not null

Вы там держитесь! Хорошего вам настроения. Здоровья.
djdiplomat
На сайте с 05.08.2009
Offline
136
#2

Да. Так тоже можно и короче будет.

Но я вот тут нашел http://www.sonika.ru/blog/wordpress/custom-fields-wordpress.htm (19-й способ)

Вообще по ходу короткий вариант.

<?php query_posts('post_type=page&meta_key=procent'); ?>

Только он у меня почему-то не пашет. Может что неверно понял...

Mad_Man
На сайте с 10.11.2008
Offline
162
#3
djdiplomat:
<?php query_posts('post_type=page&meta_key=procent'); ?>

Примеры тут. Желательно клепать новый WP_Query из аргументов.

djdiplomat
На сайте с 05.08.2009
Offline
136
#4
Mad_Man:


<?php
$args = array(
'post_type' => 'page',
'meta_query' => array('key' => 'procent')
);
?>

<?php query_posts($args); ?>

Не пашет так...

Mad_Man
На сайте с 10.11.2008
Offline
162
#5
djdiplomat:
Не пашет так...

Подтёр почти сразу, на локалке не отработал тоже.

Попробуйте вариант

$query = new WP_Query('post_type=page&meta_key=procent');

+ вывод через

<?php while ($query->have_posts()) : $query->the_post(); ?>

<!-- Do special_cat stuff... -->
<?php endwhile; ?>
djdiplomat
На сайте с 05.08.2009
Offline
136
#6

Че-то пустой результат какой то.

Я вот даже для простоты вот что хотел сделать

<?php $query = new WP_Query('post_type=page&meta_key=procent'); ?>

<?php while ($query->have_posts()) : $query->the_post(); ?>

<div><?php echo get('procent');?><div> // вывести значения всех доп-полей procent

<?php endwhile; ?>

И че-то не пашет. Мож уже туплю просто?

Вообще в своем старом коде я вытаскивал записи так:

<?php echo get (procent, $group_index=1, $field_index=1,$post_id=86) ?>

Но это неудобно, т.к. id мне в дальнейшем известен не будет. Т.е мне нужно либо вместо id=86 зафигачить переменную с отобранными id, либо принципиально по другому действовать... Вообще из отобранных страниц мне необходимы три поля. (2 дополнительных и одно - заголовок страницы)

Mad_Man
На сайте с 10.11.2008
Offline
162
#7

Кхм, а что за "get('procent');"?

Дополнительные поля и их значения вытягиваются через the_meta() или get_post_meta().

djdiplomat
На сайте с 05.08.2009
Offline
136
#8

блин, ну я мож че не так написал. В общем procent - это name дополнительного поля.

Я попытался аналогично этому сделать

<?php echo get (procent, $group_index=1, $field_index=1,$post_id=86) ?> // тут выводит значение дополнительного поля procent для страницы с id 86

Я так понял, что код описанный Вами выше получает массив в котором все записи у которых заполнено поле procent.

Т.е если мы в цикле, то получается я могу написать get('procent'); и взять значение procent из текущей записи? или я не прав?

PS Сама консрукция get('procent'); работает! Я проверил. Добавил еще <?php the_title(); ?> и получил офигенно неожиданный результат!

Отбирается всего 3 страницы (вместо 5)! Причем совершенно левых! Я даже не вкурую по какому принципу.

Т.Е. ПО НЕПОНЯТНЫМ ПОКА ПРИЧИНАМ ЗАПРОС

<?php $query = new WP_Query('post_type=page&meta_key=procent'); ?>

НЕ ОТБИРАЕТ СТРАНИЦЫ С ЗАПОЛНЕННЫМ ДОПОЛНИТЕЛЬНЫМ ПОЛЕМ procent. ВМЕСТО ЭТОГО ОТБИРАЕТ ЛЕВАК.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий