Задать вопрос

Как проверить существование произвольных полей у записей в WordPress?

У страниц в WP есть набор произвольных полей. Ключи и значения на разных страницах могут быть разными. Наличие полей так же может как присутствовать произвольное количество, так и отсутствовать вовсе.

Встал вопрос проверки наличия произвольных полей у страниц. Проблема заключается в том что в массиве произвольных полей (например при использовании функции get_post_custom()) кроме полей введенных самим пользователем так же хранится некоторая другая информация, суть которой мне правда не особо понятная. Результат работы функции print_r() применимо к нашему массиву для одной из страниц:

Для страницы где есть произвольное пользовательское поле:
Array ( [0] => _edit_lock [1] => _edit_last [2] => _wp_page_template [3] => Номин. мощность (кВт) [4] => _thumbnail_id )


Для страницы где нет произвольного пользовательского поле:
Array ( [0] => _edit_last [1] => _edit_lock [2] => _wp_page_template [3] => _thumbnail_id )


Требуется какимто образом проверить именно наличие полей введенных самим пользователем.
  • Вопрос задан
  • 4522 просмотра
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
TARAKANhoy
@TARAKANhoy Автор вопроса
Решил задачу следующим образом
<?php
if ( $keys = get_post_custom_keys() ) {
	foreach ( (array) $keys as $key ) {
		$keyt = trim($key);
		if ( is_protected_meta( $keyt, 'post' ) )
			continue;
		$values = array_map('trim', get_post_custom_values($key));
		$value = implode($values,', ');
		if ($key != 'file')
			$charakter .= "<dl><dt>$key</dt><dd>$value</dd></dl>\n";
	}
}
if ($charakter) {?>
	<h3>Технические характеристики:</h3>
	<div class="catalog-list-box">
	<?php 
	echo $charakter;
	unset($charakter);
	?>
	</div>
<?php
}?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Reexel
@Reexel
А так?
<?php $proverka = get_post_meta($post->ID, 'mytext', $single = true); ?>
<?php if($proverka !== '') {
ВЫВОД КОГДА НЕ ПУСТОЕ ПРОИЗВОЛЬНОЕ ПОЛЕ
} else {
ВЫВОД КОГДА ПУСТОЕ ПРОИЗВОЛЬНОЕ ПОЛЕ
}
Ответ написан
Комментировать
@megaterminator
Не совсем изящно, конечно: сделать массив стандартных произвольных полей и проверить функцией in_array() каждое поле, полученное через get_post_custom() просто перебором.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы