http://www.dakars.info

פילטרים בוורדפרס – קוד שימושי

0

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

כיווניות תגובות

הקוד הבא יכול לשמש ליישור התגובה לימין או לשמאל כתלות בשפה בה נכתבה

/* Comments directionality filter */
add_filter('comment_text', 'lang_dir');

function lang_dir($content) {
    $eng = preg_match_all('/[a-zA-Z].?/', $content, $matches);
    $heb = preg_match_all('/[א-תץףךםן].?/', $content, $matches);
    if ($eng > $heb) {
        return "<div class='lcomment'><p>$content &;lt;/p></div>";
    } else {
        return "<div class='rcomment'><p>$content</p></div>";
    }
}

כמובן שצריך להוסיף גם את קוד ה-css הבא:

.lcomment {
    direction: ltr;
    text-aliggn: left;
}
.rcomment {
    direction: rtl;
    text-align: right;
}

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

מחליף שפות

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

/* Language 'plugin' for the theme */
function ShowHideJs() {
?>
<script>
function setElementVisibility(eShow, eHide){
    document.getElementById(eShow).style.visibility = "visible";
    document.getElementById(eShow).style.display = "block";
    document.getElementById(eHide).style.visibility = "hidden";
    document.getElementById(eHide).style.display = "none";
}

function ShowHeb(){
    setElementVisibility("heb", "eng");
}

function ShowEng(){
    setElementVisibility("eng", "heb");
}
</script>
<?
}

function add_buttons($content) {
	if ((strstr($content, "[heb]") !== false) && (strstr($content, "[eng]") !== false)) {
                $hebbtn = get_bloginfo('template_url')."/img/hBtn";
                $engbtn = get_bloginfo('template_url')."/img/eBtn";
		$buttons .= "<img src='".$engbtn.".png'  onMouseover='this.src=\"".$engbtn."_Hover.png\"' onMouseout='this.src=\"".$engbtn.".png\"' onClick='ShowEng()' />\n";
		$buttons .= "<img src='".$hebbtn.".png'  onMouseover='this.src=\"".$hebbtn."_Hover.png\"' onMouseout='this.src=\"".$hebbtn.".png\"' onClick='ShowHeb()' />\n";
		return "<div id='lang'>".$buttons."".$content;
	}
	return $content;
}

function heb($content) {
	return str_replace ("[/heb]", "</div>",
		str_replace("[heb]", "<div id='heb' name='heb' style='visibility:display;'>", $content));
}

function eng($content) {
	return str_replace ("[/eng]", "</div>",
		str_replace("[eng]", "<div id='eng' style='visibility:hidden; display:none;'>", $content));
}

add_filter('wp_head', 'ShowHideJs');
add_filter('the_content', 'add_buttons');
add_filter('the_content', 'eng');
add_filter('the_content', 'heb');

שימו לב שהקוד למעלה משתמש במספר פילטרים שונים:

  1. פילטר JS שיושב בהדר של העמוד
  2. פילטר שמוסיף את כפתורי השפה
  3. פילטר אנגלית, פילטר עברית

את השנים האחרונים היה נניתן כמובן לשלב לפילטר יחיד, אבל אני החלטתי שזה יותר יפה כך :-)

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

ויש עוד לא מעט כאלו :-)

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

אתר המאבק לחוק המטפלות

11

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

כשעברתי על האתר, גיליתי כמה בעיות. אז למקרה שמישהו מהם קורא את הבלוג שלי…

  1. אחלה שעשיתם url-ים יפים, כדאי אולי גם לשנות את כתובת הפוסט הראשון. נכון לעכשיו כתובת הפוסט “שטיייניץ מנסה לעבוד עלינו” היא http://www.womenatwork.co.il/Naamt-Blog/2009/06/hello-world/
  2. על הדרך – הכתובת של דף האודות היא: http://www.womenatwork.co.il/Naamt-Blog/abou/
  3. כל כניסה לעמוד פנימי הורגת את העיצוב ומייצרת גלילה רוחבית ענקית (לפחות בפיירפוקס)
  4. לא ברור לי גם מדוע קבצי ה-pdf על אי השוויון המגדרי ועוד, יושבים על תת דומיין של רפרשינג ולא על הדומיין הייעודי של האתר, כך גם קישורים נוספים באתר המובילים כולם ל http://www.naamat.refreshing.co.il/Naamt-Blog/ ולא ל-http://www.womenatwork.co.il/Naamt-Blog/. בהימור – שם ישבה גרסת ההקמה של האתר ומישהו שכח לשנות כתובות סטאטיות אחרי המעבר.

עוד הערה קטנונית במיוחד

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

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

025 אתר המאבק לחוק המטפלות נהניתם ? הרשמו לעדכוני RSS !

פילטרים בוורדפרס

1

אחד הפיצ’רים הכי מגניבים של וורדפרס למתכנתים הוא כל נושא הפילטרים.

מהם פילטרים בוורדפרס ?

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

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

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

אז למה אני צריך פילטרים בוורדפרס?

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

למשל: בואו נניח שאנחנו רוצים להכניס תוכן מוסכם (למשל תמונה או קוד HTML) במקום בו המשתמש יבקש זאת.

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

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

ואיך עושים את זה ?

פונקציית ההחלפה היא קלה למימוש

function insert_sig($data) {
    str_replace("{sig}", "mysig");
}

עכשיו צריך להגיד לוורדפרס להפעיל את הפונקציה הזו על התוכן לפני שיוצג לקורא:

add_filter('the_content', 'insert_sig');

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

דוגמאות לעוד שימושים:

  • יישור תגובות לימין\שמאל
  • החלפת מילים באחרות\צנזור מילים
  • יצירת קישורים אוטומטיים
  • פיתוח תוספים לוורדפרס

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

עוד על פילטרים ניתן לקרוא בקודקס של וורדפרס כאן וכאן

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