WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Вывести страницы с определенным произвольным полем

Есть множество страниц. Большинство страниц имеют произвольное поле (например, "number") со значением от 1 до 500.

Необходимо на каждой странице вывести в автоматическом виде страницы с таким же значением в произвольном поле "number".

Наткнулся на код вроде

// значение произвольного поля 'color' не равно 'blue'
$true_args = array(
	'meta_query' => array(
		array(
			'key' => 'number',
			'value' => '150',
			'compare' => '!=' // оператор сопоставления
		)
	)
);
$true_query = new WP_Query( $true_args );

По какой-то причине код ничего не выводит. С аналогичными кодами аналогичная ситуация. Возможно, чего-то не хватает?

0
Гость 2.1 года назад
  • 0
    campusboy1737 cайт: wp-plus.ru

    Вот такой код. Считывает какое значение вашего поля на данной странице (название поле своё подставить) и на основе его выводит другие 10 результатов:

    <?php
    $my_field = get_post_meta($post->ID, 'my_custom_field', true);
    $args = array( 'posts_per_page' => 10, 'meta_key' => 'my_custom_field', 'meta_value' => $my_field );
    $lastposts = get_posts( $args );
    foreach($lastposts as $post) : setup_postdata($post);
    ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_content(); ?>
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>
    Комментировать
  • 0
    Kama4477

    Объединю ка вопрос и ответ smile

    Вы все правильно нашли, но вашем коде не хватает вывода... Вам нужен такой код.

    <?php
    global $post;
    
    // значение произвольного поля 'color' не равно 'blue'
    $args = array(
    	'meta_query' => array(
    		array(
    			'key' => 'number',
    			'value' => get_post_meta( $post->ID, 'number', 1 ),
    			'compare' => '!=' // оператор сопоставления
    		)
    	),
    	'posts_per_page' => 10,
    );
    // получаем посты
    $lastposts = get_posts( $args );
    
    // если посты есть
    if( $lastposts ){
    	// выводим посты с помощью цикла
    	foreach( $lastposts as $post ){ setup_postdata($post);
    		?>
    		<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    
    		<?php the_content(); ?>
    
    		<!-- здесь можно еще какой-то HTML код доабвить -->
    
    		<?php
    		wp_reset_postdata(); // сброс
    	}
    }
    // если постов нет
    else {
    	echo 'Постов нет...';
    }
    ?>
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.