וורדפרס WP_Query: פילטור פוסטים לפי שדות מטא

כיצד לסנן פוסטים לפי שדות מטא בלולאה של וורדפרס?

בפוסט קצר זה אני יוצא מנקודת הנחה כי ברשותכם ידע בסיסי על דרך העבודה עם הקלאס WP_Query בוורדפרס. לפני שנתחיל, ניתן מספר דוגמאות בסיסיות, בדומה לאלו שתמצאו ב WordPress Codex. השימוש באלו רלוונאי כשאתם מעוניינים ליצור פילטר לפוסטים או חיפוש מתקדם בוורדפרס / בחנות ווקומרס.

כפי שאתם יודעים, לכל הפוסטים ניתן להוסיף שדות מטא (metadata) תחת הבוקסה ״שדות מיוחדים״ הלא הם Custom Fields (יכול להיות שהם נסתרים). אז לדוגמה, אם אתם מעוניינים לשלוף את כל הפוסטים בעלי שם (meta key) הנקרא show_on_homepage ובעלי ערך (meta value) השווה ל on, תוכלו לבצע זאת בצורה הבאה:

$sv_args = array(
	'meta_key' => 'show_on_homepage',
	'meta_value' => 'on'
);
 
$sv_query = new WP_Query( $sv_args );

לעומת זאת, אם אתם מעוניינים לשלוף את כל הפוסטים, אך לא את אלו בעלי השם והערך המוזכרים מעלה תבצעו זאת בצורה הבאה עם הפרמטרים הבאים:

$sv_args = array(
	'meta_key' => 'show_on_homepage',
	'meta_value' => 'on',
	'meta_compare' => '!='
);
 
$sv_query = new WP_Query( $sv_args );

שימו לב כי הדוגמאות בפוסט זה מופשטות וחסרים מספר פרמטרים של WP_Query כגון posts_per_page או post_type.

אלו שתי דוגמאות מאד בסיסיות. פוסט זה בעיקרון הינו על הפרמטר meta_query, פרמטר זה מאפשר לכם ליצור פילטרים ממש מגניבים לפוסטים או למוצרים שלכם.

דוגמאות שימוש ב meta_query

שליפת פוסטים עם ערך ספציפי בשדה המיוחד

דוגמה פשוטה, נשלוף את כל הפוסטים להם שדה מיוחד בשם color בעל הערך white:

// the meta_key 'color' with the meta_value 'white'
$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'color',
			'value' => 'white'
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

אם תגשו לממשק הניהול של וורדפרס ותתנו מבט בעמוד העריכה של כל אחד מאותם פוסטים שיחזרו בלולאה זו, תמצאו את השדה המיוחד הבא:

custom-fields-metabox

בכדי לשלוף את כל הפוסטים אך לא את אלו בעלי שדה color עם הערך white:

$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'color',
			'value' => 'white',
			'compare' => '!='
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

כעת בואו נשלוף את כל הפוסטים עם הערך white או green:

// custom field name is color and custom field value is 'white' OR 'green'
$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'color',
			'value' => array('white','green'),
			'compare' => 'IN'
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

שליפת כל הפוסטים (מוצרים בחנות ווקומרס לצורך העניין) חוץ ממוצרים לבנים או ירוקים:

$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'color',
			'value' => array('white','green'),
			'compare' => 'NOT IN'
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

שליפת כל השדות בטווח נומרי מסויים

לדוגמה, בואו נפלטר בחנות ווקומרס את כל המוצרים שמחירם נע בין 2000 ל 4000:

// the product price is more than 2000 and less than 4000
$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'price',
			'value' => array( 2000, 4000 ),
			'type' => 'numeric',
			'compare' => 'BETWEEN'
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

השוואה נומרית

בדוגמה הבאה נפלטר את כל המוצרים שמחירם 2000 ומעלה:

$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'price',
			'value' => 2000,
			'type' => 'numeric',
			'compare' => '>='
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

מוצרים שמחירם נמוך מ 4000:

$sv_args = array(
	'meta_query' => array(
		array(
			'key' => 'price',
			'value' => 4000,
			'type' => 'numeric',
			'compare' => '<'
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );

שליפת פוסטים לפי מספר שדות מיוחדים

בואו נשלב מספר מהדוגמאות שהצגנו קודם לכן:

// the 'color' is 'white' AND the 'price' is more than 2000 and less than 4000
$sv_args = array(
	'meta_query' => array(
		'relation' => 'AND',
		array(
			'key' => 'show_on_homepage',
			'value' => 'on'
		),
		array(
			'relation' => 'OR',
			array(
				'key' => 'color',
				'value' => 'white'
			),
			array(
				'key' => 'price',
				'value' => array( 2000, 4000 ),
				'type' => 'numeric',
				'compare' => 'BETWEEN'
			)
		)
	)
);
 
$sv_query = new WP_Query( $sv_args );
רועי יוסף
רועי יוסף

מפתח וורדפרס, מאמין ביצירת הזדמנויות לעסקים קטנים, סטארטאפים נועזים ואנשים עצמאים לשנות את העולם. אוהב טיפוגרפיה, צבעים וכל מה שבינהם ומכוון לספק אתרי וורדפרס עם ביצועים גבוהים, תמיכה בכל הדפדפנים, בעלי קוד ולידי, סמנטי ונקי. צרו איתי קשר.

{ 0 תגובות… הוסף אחת }

השאירו תגובה

פעימות
estimated-reading-time-plugin-wordpress
יצירת תוסף המציג את משך זמן הקריאה של פוסט ותרגומו

כשבועיים לפני כתיבת פוסט זה, פורסם כאן מדריך קצר כיצד להציג בכל פוסט את משך זמן...