http://www.dakars.info

אני פנויה לעבודות פרילנס עד להודעה חדשה.

מה אני יודעת לעשות ? כל דבר שקשור לוורדפרס כל עוד אינו מצריך יכולות עיצוב.
דוגמאות ניתן לראות בתיק העבודות שלי או ברחבי הבלוג עצמו.
ניתן ליצור איתי קשר במיייל: webmaster@dakars.info

שדרוג ווידג’טים בסיסיים

2

קיבלתי את השאלה הבאה במייל:

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

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

אשר לראשון, תוסף הווידג’טים מגיע כברירת מחדל עם הווידג’טים הבאים:

  1. קישורים
  2. ארכיון
  3. אודות הבלוג
  4. דפים
  5. חיפוש
  6. כלים
  7. לוח שנה
  8. נושאים
  9. פוסטים אחרונים
  10. תגובות אחרונות
  11. ווידג’טי טקסט
  12. ווידג’טי RSS

נוסיף אפשרויות שינוי לווידג’טים הבאים:

  • קישורים – הוספת יכולת הצגה של חלק מהקישורים ולא כולם, הוספת יכולת סידור של הקישורים. מספר קישורים 0 ייצג הצגת כל הקישורים
  • ארכיון – אפשרות הוספת מספר פוסטים לתצוגה

את התוצאה הסופית ניתן להוריד: תוסף ווידג’טים משודרג לוורדפרס.
אם בא לכם גם להבין את החומר כדי לעשות לבד הנה ההסברים:
תוסף קישורים:
התוסף מתבסס במקור על פונקציית התבנית get_links_list שאין לה הרבה אפשרויות, אנחנו נבסס אותו על הפונקציה wp_list_bookmarks בה ניתן לשלוט הרבה יותר. שימו לב שפונקציה זו קיימת החל מ-2.1, אחרת השתמשו בפונקציה get_links.

פונקציית התוסף עצמה שבמקור נראית כך:

1
2
3
4
function widget_links($args) {
    // This ONLY works with li/h2 sidebars.
    get_links_list();
}

תראה כך:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function widget_links($args) {
    global $wp_db_version;
    extract($args);
    $options = get_option('widget_links');
    $limit = $options['count'];
    $order = $options['order'];

    if ( $wp_db_version < 3582 ) { // 2.0 competability
        // This ONLY works with li/h2 sidebars.
        get_links_list();
    } else {
        $order = ($limit == 0) ? $order : 'rand';
        $limit = ($limit == 0) ? -1 : $limit;
        wp_list_bookmarks(array('title_before'=>$before_title, 'title_after'=>$after_title, 'limit'=>$limit, 'orderby'=>$order));
    }
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function widget_links_control() {
    $options = $newoptions = get_option('widget_links');
    if ( $_POST["links-submit"] ) {
        $newoptions['order'] = $_POST["links-order"];
        $newoptions['count'] = strip_tags(stripslashes($_POST["links-count"]));
    }
    if ( $options != $newoptions ) {
        $options = $newoptions;
        update_option('widget_links', $options);
    }
    $count = htmlspecialchars($options['count'], ENT_QUOTES);
    $order = $newoptions['order'];
?>
    <p><label for="links-count">מספר: <input style="width: 250px;" id="links-count" name="links-count" type="text" value="<?php echo $count; ?/>" /></label><br />
    <label for="
links-order">סדר: <select id="links-order" name="links-order">
        <option value="
id"<?=(($order == 'id')?' selected':'')?>>מספר</option>
        <option value="name"<?=(($order == 'name')?' selected':'')?>>שם</option>
        <option value="updated"<?=(($order == 'updated')?' selected':'')?>>תאריך עדכון</option>
        <option value="rand"<?=(($order == 'rand')?' selected':'')?>>אקראי</option>
    </select></label></p>
    <input type="hidden" id="links-submit" name="links-submit" value="1" />
<?php
}

עכשיו רק נותר לרשום את פונקציית השליטה עבור הווידג’ט. עושים זאת בסוף הקובץ על ידי הוספת השורה:[/cc]

1
register_widget_control('קישורים', 'widget_links_control', 300, 90);

ישר אחרי השורה:

1
register_sidebar_widget('קישורים', 'widget_links');

wp_get_archives
בפונקציית השליטה הוספתי checkbox עבור הוספת מונה פוסטים, והקוד נראה עכשיו כך:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function widget_archives_control() {
    $options = $newoptions = get_option('widget_archives');
    if ( $_POST["archives-submit"] ) {
        $newoptions['title'] = strip_tags(stripslashes($_POST["archives-title"]));
        $newoptions['post_count'] = $_POST['archives-count'] == 'on' ? 1 : 0;
    }
    if ( $options != $newoptions ) {
        $options = $newoptions;
        update_option('widget_archives', $options);
    }
    $title = htmlspecialchars($options['title'], ENT_QUOTES);
    $count = $newoptions['post_count'];
?>
    <p><label for="archives-title">כותרת: <input style="width: 250px;" id="archives-title" name="archives-title" type="text" value="<?php echo $title; ?/>" /></label><br />
    <label for="
archives-count">הצגת כמות פוסטים: <input id="archives-count" name="archives-count" type="checkbox" <?=($count == 1 ? "checked" : "")?/> /></label></p>
            <input type="
hidden" id="archives-submit" name="archives-submit" value="1" />
<?php
}

לפונקציה של הווידג’ט עצמו הוספתי את השימוש בערך החדש, והקוד החדש הוא:
[/cc]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function widget_archives($args) {
    extract($args);
    $options = get_option('widget_archives');
    $title = empty($options['title']) ? 'ארכיון' : $options['title'];
    $post_count = empty($options['post_count']) ? 0 : $options['post_count'];
    if ($post_count == 1)
        $count = "&show_post_count=1";
?>
        <?php echo $before_widget; ?>
            <?php echo $before_title . $title .$after_title; ?>
            <ul>
            <?php wp_get_archives('type=monthly'.$count); ?>
            </ul>
        <?php echo $after_widget; ?>
<?php
}</code

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

025 שדרוג ווידג’טים בסיסיים נהניתם ? הרשמו לעדכוני RSS !

תגובות (2)

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

שוב,
תודה רבה וחג שמח
לכולם. :)

אחלה מדריך בהחלט אבל.. (ומבלי לגרוע חס וחלילה)
אני חושב ש get_links כבר לא בתוקף והוחלף על ידי
wp list bookmarks – נכון ? ;)

ניתן להגיב


:mrgreen::|:twisted::arrow:8O:):?8):evil::D:idea::oops::P:roll:;):cry::o:lol::x:(:!::?: