חיפוש ]

ארכיונים: סניפטים וקטעי קוד | עמוד 18

הגדרת אוטומטית של התמונה הראשונה בפוסט כתמונה הראשית

הסניפט הבא ייקח את התמונה הראשונה שהוא מוצא בפוסט ויגדיר אותה כתמונה ראשית (featured image). במידה ותבחרו תמונה ראשית הוא יראה אותה כמובן. function autoset_featured() { global $post; $already_has_thumb = has_post_thumbnail($post->ID); if (!$already_has_thumb) { $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" ); if ($attached_image) [...]

הסניפט הבא ייקח את התמונה הראשונה שהוא מוצא בפוסט ויגדיר אותה כתמונה ראשית (featured image). במידה ותבחרו תמונה ראשית הוא יראה אותה כמובן.

function autoset_featured() {
          global $post;
          $already_has_thumb = has_post_thumbnail($post->ID);
              if (!$already_has_thumb)  {
              $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
                          if ($attached_image) {
                                foreach ($attached_image as $attachment_id => $attachment) {
                                set_post_thumbnail($post->ID, $attachment_id);
                                }
                           }
                        }
      }
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');

ביטול הודעת השגיאה במסך הכניסה של וורדפרס

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

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

add_filter('login_errors',create_function('$a', "return null;"));

קביעת ברירת מחדל למצב עריכת פוסט וורדפרס

ישנם כאלו שמעדיפים לעבוד עם העורך הויזואלי (visual editor) כשהם כותבים פוסט וכאלו שמעדיפים את עורך הטקסט (text editor). שנו את ברירת המחדל בעריכת פוסט על הוספת שורות לקובץ functions.php. # Visual Editor as default add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') [...]

ישנם כאלו שמעדיפים לעבוד עם העורך הויזואלי (visual editor) כשהם כותבים פוסט וכאלו שמעדיפים את עורך הטקסט (text editor). שנו את ברירת המחדל בעריכת פוסט על הוספת שורות לקובץ functions.php.

# Visual Editor as default
add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') );

# HTML Editor as default
add_filter( 'wp_default_editor', create_function('', 'return "html";') );

איך לאפשר תגובות בסוגי תוכן מותאמים (custom post types)

כברירת מחדל וורדפרס חוסמת את אפשרות התגובות לפוסטים מותאמים אישית. על מנת לאפשר אותם הוסיפו את האפשרות של comments תחת supports (שורה 34).

כברירת מחדל וורדפרס חוסמת את אפשרות התגובות בסוגי תוכן מותאמים (custom post types). על מנת לאפשר תגובות בפוסט מותאם אישית הוסיפו את האפשרות של comments תחת supports היכן שאתם מגדירים אותו (שורה 32).

function snippet_custom_init() {
      $labels = array(
          'name' => 'סניפט',
          'singular_name' => 'סניפט',
          'add_new' => 'הוסף סניפט חדש',
          'add_new_item' => 'הוסף סניפט חדש',
          'edit_item' => 'ערוך סניפט',
          'new_item' => 'סניפט חדש',
          'all_items' => 'כל הסניפטים',
          'view_item' => 'הצג סניפט',
          'search_items' => 'חפש סניפט',
          'not_found' =>  'לא נמצא סניפט',
          'not_found_in_trash' => 'לא נמצא סניפט בפח',
          'parent_item_colon' => '',
          'menu_name' => 'סניפטס',
          );

      $args = array(
          'labels' => $labels,
          'exclude_from_search' => false,
          'public' => true,
          'publicly_queryable' => true,
          'show_ui' => true,
          'show_in_menu' => true,
          'query_var' => true,
          'rewrite' => array( 'slug' => 'סניפט' ),
          'capability_type' => 'post',
          'has_archive' => true,
          'hierarchical' => false,
          'taxonomies' => array('category'),
          'menu_position' => null,
          'supports' => array( 'title', 'author', 'thumbnail', 'excerpt', 'comments', 'editor' )
          );

        register_post_type( 'snippet', $args );
    }
add_action( 'init', 'snippet_custom_init', 0);

כיצד להפוך את סדר התגובות בוורדפרס?

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

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

אסביר פה כיצד להפוך את סדר התגובות בוורדפרס.

אופציה ראשונה

גשו להגדרות > דיון. תחת הגדרות תגובות נוספות מצאו את ״ההגדרות הישנות יותר תוצגנה בתחילת העמוד״ ושנו את ההגדרה בהתאם.

להפוך את סדר התגובות בוורדפרס

אופציה שנייה

הוסיפו את הקוד הבא לקובץ functions.php של התבנית שלכם:

function wpb_reverse_comments($comments) {
		return array_reverse($comments);
	}	
add_filter ('comments_array', 'wpb_reverse_comments');

אנו משתמשים פה בפילטר comments_array בכדי להפוך את סדר התגובות.

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

כיצד לאפשר הרצה של קוד PHP בטקסט ווידג׳ט?

לפעמים אנו מעוניינים לאפשר הרצה של קוד PHP בטקסט ווידג׳ט אך וורדפרס אינה מאפשרת זאת מטעמי אבטחה. ניתן לבצע זאת כמובן באמצעות תוספים כגון PHP text widget או PHP Code Widget אך מדוע להשתמש בפלאגינים כאשר אפשר לעשות זאת בעצמינו בשניות ספורות? [...]

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

ניתן לבצע זאת כמובן באמצעות תוספים כגון PHP text widget או PHP Code Widget אך מדוע להשתמש בפלאגינים כאשר אפשר לעשות זאת בעצמינו בשניות ספורות? הפתרון אפילו מהיר יותר מאשר הזמן שייקח להתקנת התוסף. ערכו את הקובץ functions.php והוסיפו את הקוד הבא:

if ( strpos( $html, "<" . "?php" ) !== false ) {
	ob_start();
	eval( "?" . ">" . $html );
	$html = ob_get_contents();
	ob_end_clean();
}
return $html;
}
add_filter( 'widget_text', 'php_execute', 100 );

נקו זכרון מטמון (Cache) בהנחה ואתם משתמשים בתוסף cache כגון WP-Rocket. בכדי לבדוק את הקוד הוסיפו ווידג׳ט טקסט ורשמו בפנים את הקוד הבא:

<?php echo 'שלום עולם !!!' ?>

עכשיו בדקו את המקום בו הוספתם את הווידג׳ט…

אם אנו כבר בנושא, אז בכדי לאפשר שורטקודים בטקסט ווידג׳ט הוסיפו את הקוד הבא לקובץ functions.php:

add_filter('widget_text', 'do_shortcode');

 

איך לבטל עדכונים אוטומטיים באתרי וורדפרס?

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

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

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

הדרך הקלה ביותר לבטל את העדכונים האוטמטיים היא ע״י הורדה והתקנה של הפלאגין
Easy Updates Manager plugin

לאחר ההתקנה גשו להגדרות > Easy Updates Manager plugin בכדי לשנות את ההגדרות.

disableupdatesmanager

לחילופין אתם יכולים לבטל את העדכונים ע״י הוספת השורה הבאה לקובץ wp-config.php אשר נמצא בספרייה הראשית של האתר.

define( 'WP_AUTO_UPDATE_CORE', false );

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

ביטול עדכון של פלאגינים:

add_filter( 'auto_update_plugin', '__return_false' );

ביטול עדכון של תבניות:

add_filter( 'auto_update_theme', '__return_false' );

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

שינוי מיקום כפתור הוסף לעגלה ב Woocommerce

באחד מאתרי הוורדפרס האחרונים שבניתי ללקוח, התבקשתי לשנות את מיקום כפתור הוסף לעגלה ב Woocommerce. ניתן לבצע זאת ע״י קריאה לפעולה (action) באמצעות ההוק woocommerce_single_product_summary הפעולה עצמה מתבצעת בקובץ content-single-product.php: <?php /** * woocommerce_single_product_summary hook * * @hooked woocommerce_template_single_title - 5 * @hooked [...]

באחד מאתרי הוורדפרס האחרונים שבניתי ללקוח, התבקשתי לשנות את מיקום כפתור הוסף לעגלה ב Woocommerce. ניתן לבצע זאת ע״י קריאה לפעולה (action) באמצעות ההוק woocommerce_single_product_summary

הפעולה עצמה מתבצעת בקובץ content-single-product.php:

<?php
        /**
         * woocommerce_single_product_summary hook
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        do_action( 'woocommerce_single_product_summary' );
?>

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

/** WooCommerce: change position of add-to-cart on single product **/
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 15 );

הוסיפו את הקוד הנ״ל לקובץ functions.php בכדי להבין את התוצאה. שחקו עם העדיפות בכדי לשנות את מיקום כפתור הוסף לעגלה בווקומרס …

איך להסיר או להוסיף עמודים מתוצאות החיפוש של וורדפרס?

על מנת להסיר עמודים מתוצאות החיפוש הוסיפו את הקוד הבא לקובץ functions.php . ניתן גם להגביל את החיפוש ל Post Type מסויים ע״י שינוי המילה post בשורה 7 למזהה (slug) של ה Post Type שברצונכם להציג. /* Remove Pages from Search Results [...]

על מנת להסיר עמודים מתוצאות החיפוש הוסיפו את הקוד הבא לקובץ functions.php . ניתן גם להגביל את החיפוש ל Post Type מסויים ע״י שינוי המילה post בשורה 7 למזהה (slug) של ה Post Type שברצונכם להציג.

/* Remove Pages from Search Results */

function filter_pages_from_search($query) {
    if ($query->is_search) {
        $query->set('post_type', 'post');
    }
    return $query;
}

add_filter('pre_get_posts','filter_pages_from_search');

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

/* Add Pages to Search Results */

function filter_pages_from_search($query) {
    if ($query->is_search) {
        $query->set('post_type', array('post', 'page'));
    }
    return $query;
}

add_filter('pre_get_posts','filter_pages_from_search');

הצגת השפה הלא פעילה בלבד ב WPML

לפני מספר ימים, התבקשתי מלקוח בעל אתר דו לשוני העובד עם התוסף WPML כי בתפריט האתר יופיע רק כפתור השפה שאינה פעילה כרגע, לעומת המצב הדיפולטיבי בו מופיעות כל השפות. כלומר, מהמצב הזה: או הזה: להגיע למצב הזה: זה הטריק… [...]

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

כלומר, מהמצב הזה:
inactive_lang2
או הזה:
inactive_lang1
להגיע למצב הזה:
inactive_lang

זה הטריק… הוסיפו את הקוד הבא ל functions.php :

/*  Showing only non active language on menu */

add_filter('wp_nav_menu_items', 'new_nav_menu_items', 10, 2);

function new_nav_menu_items($items, $args) {

 if (function_exists('icl_get_languages')) {

  $languages = icl_get_languages('skip_missing=0');

  if(!empty($languages)){

    foreach($languages as $l){

    if(!$l['active']){

     // flag with native name
     $items = $items . '<li class="menu-item"><a href="' . $l['url'] . '"><img src="' . $l['country_flag_url'] . '" height="12" alt="' . $l['language_code'] . '" width="18" /> ' . $l['native_name'] . '</a></li>';

    }
   }
  }
 }
return $items;
}
Savvy WordPress Development