הצגת מזהה (ID) של עמודים ופוסטים בלוח הבקרה של וורדפרס

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

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

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

https://he.savvy.co.il/blog/wp-admin/post.php?post=XXXX&action=edit

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

הצגת מזהה הפוסט באמצעות קוד

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

הוספת עמודות ללוח הבקרה של וורדפרס

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

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;
	}
}

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

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

הצגת מזהה פוסט - לוח הבקרה של וורדפרס

מציאת ההוקים הנכונים

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

הוקים אלו אגב נקראים ״הוקים משתנים״ או בעגה המקצועית variable hooks מכיוון והם שייכים לסט של הוקים ונכתבים כך:

  • manage_[post_type_or_element]_columns
  • manage_[post_type_or_element]_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 & posts 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 למערך העמודות עם המערך החדש שלנו אך מכיוון והעמודה הראשונה היא תיבת הסימון זה קצת יותר טריקי מאחר ואנו רוצים את עמודת המזהה לאחר עמודת תיבת הסימון (העמודה השנייה).

זאת אומרת שעדיין נבצע merge למערכים אך לפני שנעשה זאת נבצע split למערכים. המערך הראשון יכיל את תיבת הסימון (האלמנט הראשון במערך המקורי) והמערך השנייכיל את שאר האלמנטים. נבצע merge בין המערך המכיל את תיבת הסימון למערך המכיל את המזהה שלנו ולאחר מכן עם המערך המכיל את שאר האלמנטים.

מבט בקוד אמור להבהיר את הפעולה בצורה טובה יותר, והתוצאה בתמונה מטה:

<?php
function sv_custom_columns_head( $columns ) {
        $checkbox = array_slice( $columns , 0, 1 );
        $columns = array_slice( $columns , 1 );
 
        $new['sv_post_id'] = 'ID';
 
        $columns = array_merge( $checkbox, $new, $columns );
 
        return $columns;
    }
?>

הצגת המזהה בעמודה השנייה - לוח הבקרה של וורדפרס

מסקנה

דוגמא זו משקפת בצורה מצויינת את המודולריות של וורדפרס. בגירסאות ישנות של וורדפרס (2.5 ומטה) המזהה היה מוצג כברירת מחדל הסתבר שהוא אינו רלוונטי להרבה אנשים והוחלט להסיר אותו. מאותו רגע, התחילו לצוץ כל מיני תוספים המציגים את המזהה כדוגמת התוסף Reveal IDs.

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

רועי יוסף

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

תגובות פייסבוק

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

השאירו תגובה

שיתופים
קראו גם את:
וריאיציות מוצרים - ווקומרס
וריאציות מוצרים – ווקומרס (WooCommerce)

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