หน้าหลัก » ภาษาพีเอชพี (PHP) » Wordpress » WordPress WP_Query จัดเรียงตาม meta_value กรณีเป็นตัวเลข

WordPress WP_Query จัดเรียงตาม meta_value กรณีเป็นตัวเลข




โดยปกติแล้ว meta_value จะเก็บเป็น string ทำให้ตอนจัดเรียง (orderby) จะเป็นเงื่อนไขการจัดเรียงแบบ string สมมติ เรามี meta_value เช่น 1, 90, 10, 30, 2, 3 ซึ่งเวลาจัดเรียงแล้วจะได้ 1, 10, 2, 3, 30, 90 ไม่ตรงตามที่เราต้องการ แต่ที่ต้องการคือเรียง 1, 2, 3, 10, 30, 90

เราจะต้องทำให้ WP_Query รู้ว่าจะต้องจัดเรียงแบบตัวเลข (NUMBERIC) โดยเพิ่ม ‘meta_type’ => ‘NUMERIC’ เข้าไปในเงื่อนไขตอน Query

ตัวอย่าง WP_Query

<?php
$services = new WP_Query(array(
	'post_type' => 'service',
	'tax_query' => array(
		array(
			'taxonomy' => 'service_type',
			'field' => 'name',
			'terms' => $post->post_name,
		),
	),
	'meta_key'  => 'price',
	'posts_per_page' => -1,
	'orderby' => 'meta_value',
	'meta_type' => 'NUMERIC',	//เพิ่มบรรทัดนี้
	'order' => 'ASC', ));



อ้างอิงข้อมูล
stackoverflow.com