דף הבית » סקירת תוספים

תוספים: לבנות ממשקי ניהול לתבניות ותוספים בקלות

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

AdminPage Class for WordPress

AdminPage Class for WordPress

מה בדיוק הבעיה?

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

דף ממשק הניהול בעזרת הקוד החדש והקצר

דף ממשק הניהול בעזרת הקוד החדש והקצר

מייצרים כך:

add_action('admin_init', 'options_init' );
add_action('admin_menu', 'options_add_page');

function options_init(){
    register_setting('example_options', 'example_options', 'options_validate' );
    add_settings_section('general_section', 'מידע כללי', 'section_general', __FILE__);
    add_settings_field('example_input_text', 'שדה לדוגמא', 'example_input_text', __FILE__, 'general_section');
}

function options_add_page() {
    add_menu_page('Options Example Page', 'אפשרויות תבנית', 'manage_options', 'template_options', 'options_page');
}

function  section_general() {
    echo 'אפשרויות כלליות בתבנית';
}

function  example_input_text() {
    $options = get_option('example_options');
    echo "";
}

function options_validate($input) {
    // Check our textbox option field contains no HTML tags - if so strip them out
    $input['text_string'] =  wp_filter_nohtml_kses($input['text_string']);
    return $input; // return validated input
}

function options_page() {
?>
    <div class="wrap">
        <h2>אפשרויות תבנית</h2>
        דף זה הינו דף דוגמא.

        <form action="options.php" method="post">
            <p class="submit"><input name="Submit" type="submit" class="button-primary" value="" /></p>
        </form>
    </div>
<?php
}

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

לא בדיוק תוסף

אז בשונה מהתוספים הרגילים של וורדפרס, התוסף WordPress AdminPage Class, הוא פשוט סקריפט php, אותו מעלים לתיקיית התבנית או התוסף, מוסיפים קריאה לקובץ ב-functions.php בקלות יחסית:

include 'adminpage.class.php';

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

$site = new TopPage(array(
    'menu_title' => 'אפשרויות תבנית',
    'page_title' => 'אפשרויות תבנית',
    'menu_slug' => 'template_options',
));
$site->addTitle('אפשרויות תבנית');
$site->addParagraph('דף זה הינו דף דוגמא.');
$site->addSubtitle('מידע כללי');
$site->addParagraph('אפשרויות כלליות בתבנית');
$site->addInput(array(
    'id' => 'example_input_text',
    'label' => 'שדה לדוגמא',
    'desc' => 'הסבר על שדה לדוגמא',
));

וזה נראה כמעט אותו הדבר:

דף ממשק הניהול שנוצר בעזרת הקוד הארוך הרגיל

דף ממשק הניהול שנוצר בעזרת הקוד הארוך הרגיל

מסקנות מהניסוי

יתרונות:

  • קל מאוד לשימוש
  • מאפשר להטמיע בקלות יחסית את כל השדות האלמנטריים, כולל העלאת קבצים ואזורי עריכת תוכן עם העורך הויזואלי
  • כותב הסקריפט ממשיך לעדכן אותו ולתמוך בתגובות באתר.
  • כמעט לכל מפתח וורדפרס הוא שווה יותר מ-8$, מחירו באתר (ששווים לפחות משעת עבודה אחת).

חסרונות:

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

מידע נוסף

עלות – 8$ באתר Code Canyon

רכישהwordpress-adminpage-class (קישור ממומן)

מידע נוסףדרישות מינימום, התקנה, שימוש, שידרוג, פתרון בעיות

מאת אסף צ'רטקוף

בימים CTO בחברת innovinet - Online Marketing ועובד בעיקר על Wordpress, בלילות משתדל לעדכן את בידיים - קיימות בסגנון עשה זאת בעצמך, שבנוי, איך לא - על Wordpress.

10 תגובות »

  • ארז כותב :

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

  • רמי כותב :

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

  • ארז כותב :

    חיפשתי קצת, ומצאתי את זה (שזה לא ממש תוסף, אבל הוא מסביר איך לכתוב את הממשק ניהול בצורה יותר נוחה ובתחביר דומה לתוסף הזה):
    http://wefunction.com/2009/10/revisited-creating-custom-write-panels-in-wordpress/
    ויש את זה (שזה פחות או יותר כמו מה שהצגת פה, אבל לא בדקתי אותו לעומק):
    http://www.clarksonenergyhomes.com/wordpress/projects/wordpress-plugin-add-dynamic-meta-boxes/

  • אסף צ'רטקוף כותב :

    @ארז, מכיוון שהתוסף הוא class ב-php, אף אחד לא ייחשף לקוד. הקוד ש"עולה כסף" נמצא בצד שרת. מה שהוא מייצר, הגדרות התבנית, זה מה שמגיע לצד לקוח, לדפדפן.

    חוץ מזה, הרישיון מאפשר לך אפילו למכור תבניות בזירות שונות כשאתה משתמש בקוד הזה.

  • ארז כותב :

    @אסף, אני יודע שזה בצד שרת, אבל במקור של התוסף יש את התוסף הזה שעולה כסף, לכן כל מי שיוריד את התוסף יוכל לקחת את התוסף הזה משם…

  • חתול כותב :

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

  • מאור כותב :

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

    בכל מקרה, סתם מסקרנות לגבי העבודה של האובייקט הזה, איך הוא שומר בדטהבייס את הנתונים השונים?
    האם עבור כל שדה הוא מייצר ערך בטבלת wp_options או שהוא מייצר מערך "מסורלז" (serialized) עבור כל האינפוטים השונים?

  • אורן כותב :

    יש את ה"פריימוורק" הזה.

    http://scribu.net/wordpress/scb-framework

    הוא מצויין, חופשי, ומכיל עוד כמה דברים.

  • bainternet כותב :

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

    https://github.com/bainternet/Admin-Page-Class

  • מפתח כותב :

    המומלץ ביותר לפי דעתי – http://aquagraphite.com/2011/09/slightly-modded-options-framework/

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>