מדי פעם נתקלים בסיטואציה שבה צריך לדעת את מזהה (ID) הפוסט או העמוד בוורדפרס, בין אם עבור שורטקודים, לשימוש בבניית התבנית או לכל מטרה אחרת. אם עבדתם עם WordPress במשך תקופה כלשהי, סביר שנתקלתם בצורך הזה יותר מפעם אחת.
למרבה הצער, וורדפרס אינה מציגה כברירת מחדל את אותם מזהים (ID's) בלוח הבקרה.
ישנה דרך לגלות מזהים אלו על ידי ביקור בדף העריכה של אותו עמוד/פוסט ולבדוק את ה-URL שלו. הוא ייראה משהו בסגנון הבא:
https://savvy.co.il/wp-admin/post.php?post=XXXX&action=editXXXX בדוגמה זו הוא המזהה של הפוסט – המזהה הייחודי במסד הנתונים של WordPress. אך דרך זו מסורבלת וגוזלת זמן, לבטח צריכה להיות דרך נוחה יותר להצגת מזהים אלו ולשמחתנו יש.
הצגת מזהה הפוסט באמצעות קוד
כדי להציג את מזהה הפוסטים בצורה נוחה, תנו מבט בקוד המופיע מטה. על קוד זה להופיע בקובץ ה-functions.php של התבנית שלכם או בתוסף ייעודי.
functions.php של תבנית האב – השינויים יימחקו בעדכון הבא של התבנית.הוספת עמודות ללוח הבקרה של WordPress
וורדפרס מספקת כלים מצוינים כדי לבצע שינויים ברשימת הפוסטים בלוח הבקרה, ואלו מאפשרים יצירת עמודות חדשות בקלות.
עליכם להשתמש ב-filters כדי להוסיף עמודות וב-actions כדי להוסיף את התוכן. הנה דוגמה כיצד להוסיף עמודת ID לרשימת הפוסטים בלוח הבקרה:
add_filter( 'manage_posts_columns', 'sv_add_id_column', 5 );
add_action( 'manage_posts_custom_column', 'sv_id_column_content', 5, 2 );
function sv_add_id_column( $columns ) {
$columns['sv_id'] = 'ID';
return $columns;
}
function sv_id_column_content( $column, $id ) {
if ( 'sv_id' == $column ) {
echo $id;
}
}זה בעצם כל מה שצריך. הוקים אלו מאפשרים להוסיף עמודה על ידי שינוי מערך העמודות. מפתח המערך הוא המזהה של העמודה, והערך שלו הוא מה שיוצג בלוח הבקרה של WordPress כשם העמודה.
שימו לב שהפונקציה sv_id_column_content מקבלת שני פרמטרים: שם העמודה והמזהה (ID) של הפוסט המוצג. מה שנשאר הוא פשוט להדפיס מזהה זה בעמודה שיצרתם. הנה תמונה של התוצאה כפי שנראית בלוח הבקרה של WordPress:

מציאת ההוקים הנכונים
שתי הפונקציות מעלה הן כל מה שצריך. החלק השני בפאזל הוא לדעת באיזה הוק להשתמש. ההוקים בהם השתמשנו מטרגטים פוסטים רגילים בלבד, ועמודת המזהה לא תופיע בעמודים או בכל סוג תוכן אחר.
הוקים אלו נקראים "הוקים משתנים" (variable hooks) מכיוון שהם שייכים למשפחת הוקים ששמותיהם עוקבים אחר תבנית קבועה. החליפו את
[post_type_or_element]בסוג התוכן הרלוונטי:
manage_[post_type_or_element]_columnsmanage_[post_type_or_element]_custom_columnלדוגמה, כדי לטרגט עמודים תשתמשו ב-
manage_pages_columnsוב-manage_pages_custom_column.
על בסיס תבנית זו ניתן לעבוד עם פוסטים, עמודים וסוגי תוכן מותאמים (Custom Post Types). כדי להציג את עמודת המזהה עבור פוסטים, עמודים, תגובות, מדיה ואפילו עבור משתמשים (users) יש להשתמש בקוד הבא:
function sv_add_id_column( $columns ) {
$checkbox = array_slice( $columns, 0, 1 );
$columns = array_slice( $columns, 1 );
$id['sv_id'] = 'ID';
$columns = array_merge( $checkbox, $id, $columns );
return $columns;
}
function sv_id_column_content( $column, $id ) {
if ( 'sv_id' == $column ) {
echo $id;
}
}
// posts & post types
add_filter( 'manage_posts_columns', 'sv_add_id_column', 5 );
add_action( 'manage_posts_custom_column', 'sv_id_column_content', 5, 2 );
// pages
add_filter( 'manage_pages_columns', 'sv_add_id_column', 5 );
add_action( 'manage_pages_custom_column', 'sv_id_column_content', 5, 2 );
// users
add_action( 'manage_users_columns', 'sv_add_id_column', 5 );
add_filter( 'manage_users_custom_column', 'sv_id_column_content', 5, 2 );
// media
add_filter( 'manage_media_columns', 'sv_add_id_column', 5 );
add_action( 'manage_media_custom_column', 'sv_id_column_content', 5, 2 );
// comments
add_action( 'manage_edit-comments_columns', 'sv_add_id_column', 5 );
add_action( 'manage_comments_custom_column', 'sv_id_column_content', 5, 2 );כדי להוסיף את עמודת המזהה עבור כל סוגי הטקסונומיות – קטגוריות, תגיות וכו' – השתמשו בלולאת foreach:
// all taxonomies
function sv_id_taxonomy_columns( $columns ) {
$columns['my_term_id'] = 'ID';
return $columns;
}
function sv_id_taxonomy_columns_content( $content, $column_name, $term_id ) {
if ( 'my_term_id' == $column_name ) {
$content = $term_id;
}
return $content;
}
$taxonomies = get_taxonomies();
foreach ( $taxonomies as $taxonomy ) {
add_action( 'manage_edit-' . $taxonomy . '_columns', 'sv_id_taxonomy_columns' );
add_filter( 'manage_' . $taxonomy . '_custom_column', 'sv_id_taxonomy_columns_content', 10, 3 );
}הצגת המזהה בעמודה השנייה
כרגע עמודת המזהה מופיעה בעמודה האחרונה. אך מה אם רוצים להציג את המזהה מיד אחרי עמודת תיבת הסימון (checkbox) לטובת הנוחות?
תיאורטית ניתן היה למזג (merge) את מערך העמודות עם המערך החדש, אך מאחר שהעמודה הראשונה היא תיבת הסימון, זה דורש צעד נוסף. כדי שעמודת המזהה תופיע אחרי תיבת הסימון, צריך לפצל את המערך קודם.
המערך הראשון מכיל את תיבת הסימון (האלמנט הראשון במערך המקורי) והמערך השני מכיל את שאר האלמנטים. ממזגים את המערך של תיבת הסימון עם מערך המזהה, ולאחר מכן עם המערך שמכיל את שאר האלמנטים.
מבט בקוד אמור להבהיר את הפעולה בצורה טובה יותר, והתוצאה בתמונה מטה:
add_filter( 'manage_posts_columns', 'sv_add_id_column', 5 );
add_action( 'manage_posts_custom_column', 'sv_id_column_content', 5, 2 );
function sv_add_id_column( $columns ) {
$checkbox = array_slice( $columns, 0, 1 );
$columns = array_slice( $columns, 1 );
$new['sv_id'] = 'ID';
$columns = array_merge( $checkbox, $new, $columns );
return $columns;
}
שאלות נפוצות
שאלות נפוצות בנושא הצגת מזהי פוסטים בלוח הבקרה של WordPress:
post= הוא המזהה. לדוגמה, post.php?post=42&action=edit אומר שהמזהה הוא 42.manage_posts_columns ו-manage_posts_custom_column חלים על כל סוגי התוכן הציבוריים. עבור סוגי תוכן מותאמים עם הגדרות ספציפיות, ניתן להשתמש בהוקים ממוקדים כמו manage_{post_type}_posts_columns.functions.php של תבנית הבת, או עדיף - לתוסף MU-Plugin ייעודי. היתרון של MU-Plugin הוא שהוא נשאר פעיל ללא קשר לתבנית שבה אתם משתמשים.סיכום
דוגמה זו משקפת בצורה מצוינת את המודולריות של WordPress. בגרסאות ישנות של WordPress (2.5 ומטה), המזהה היה מוצג כברירת מחדל, אך מאחר שלא היה רלוונטי למרבית המשתמשים הוחלט להסירו. מהרגע שהוסר, התחילו לצוץ תוספים שונים המציגים את המזהה, כדוגמת התוסף Reveal IDs.
רוצים לשדרג את ממשק הניהול עוד יותר? אפשר גם להציג תמונות ראשיות בעמודה נפרדת לצד כותרת הפוסט – ללא תוסף.


מאמר מצוין,
אני גם מוצא את עצמי צריך הרבה פעמים את ה-id של עמודים ופוסטים ולדעתי זה פחות נוח להיכנס לאזור הניהול ולהתחיל לחפש את ה-id של הפוסטים אחד אחד.
הרבה יותר נוח להציג את ה-id בבאר העליון של כל עמוד בוורדפרס וזה חוסך הרבה זמן.
בניגוד לתוסף Reveal IDs לפני כמה חודשים פיתחתי ושיחררתי תוסף לוורדפרס שמאפשר להציג את ה-id כמעט בכל האזורים של וורדפרס וגם בבאר העליון. לי באופן אישי זה חוסך הרבה זמן ואני ממליץ לך לנסות.
https://wordpress.org/plugins/show-posts-and-pages-id/
מגניב יוחאי 🙂 מניח שזה מאד שימושי…. אבדוק אותו!
תודה רבה, השאלה שלי אם יש לי את ה ID ואני רוצה למצוא את הפוסט אני עושה חיפוש של ה ID בלוח הבקרה הוא לא מביא לי כלום.
היי מירי,
זו בדיוק הסיבה שיש לבצע מה שכתוב בפוסט זה. כך לפחות ה ID יופיע ליד שמות הפוסטים ותוכלי לחפש באמצעות חיפוש פשוט ברמת הדפדפן על יד CTRL-F או CMD-F במקלדת..
איך אני מגדירה id לתמונה מסוימת בכדי לשנות רק אותה?
היי,
לא בטוח מה כוונתך, מה הרעיון של לתת ID לתמונה? לתמונות בוורדפרס אין ID…
אם אני רוצה לעצב מתוך מאגר תמונות רק תמונה מסוימת איך אני מגיעה אליה..ללא הגדרת id
את משתמשת בחיפוש תחת "מדיה" ומנסה למצוא אותה על פי התיאור שנתת לה או לפי שם קובץ התמונה. את שם הקובץ את יכולה למצוא באמצעות Inspect Element על התמונה (Developer Tools).