Search

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

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

לפעמים אנו מעוניינים לאפשר הרצה של קוד 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 במטרה לשפר את האבטחה של האתרים. כברירת מחדל העדכון מוגבל לעדכונים מינורים בלבד למטרת אבטחה ותחזוקה, אך במקרים מסויימים וורדפרס יכולה לעדכן גם פלאגינים ותבניות.

הדרך הקלה ביותר לבטל את העדכונים האוטמטיים היא ע״י הורדה והתקנה של הפלאגין
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_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 */

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 כי בתפריט האתר יופיע רק כפתור השפה שאינה פעילה כרגע, לעומת המצב הדיפולטיבי בו מופיעות כל השפות.

כלומר, מהמצב הזה:
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;
}

כיצד לתזמן פרסום פוסטים בעתיד?

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

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

future_post_publish

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

יצירת עמוד מותאם אישית (page tamplate) כעמוד בית

בכדי ליצור עמוד מותאם אישית (page tamplate) כעמוד בית בוורדפרס, שכפלו את page.php אשר נמצא בתיקיה הראשית של התבנית או צרו קובץ php חדש והוסף את הקוד הבא בחלקו העליון:

<?php /* Template Name: xxxxxx */ ?>

כאשר xxxxxx זה השם שיופיע תחת ״מאפייני עמוד״ כשתיצרו עמוד חדש ותו לא.

עבור לפנל הניהול שלך וורדפרס, צור דף חדש ובחר תבנית זו.

דף בית מותאם אישית - וורדפרס

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

עמוד בית מותאם אישית - וורדפרס

בחר את העמוד שלך להיות העמוד הראשי. זהו, יש ברשותך עמוד בית מותאם אישית. תנו מבט בפוסט הבא המדבר בהרחבה על תבניות עמוד בוורדפרס (Page Templates).

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

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

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );    // 2.1 +
 
function woo_custom_cart_button_text() {
         return __( 'My Button Text', 'woocommerce' );
 }

כיצד לתקן Maximum Execution Time Exceeded בוורדפרס?

השבוע ניסיתי לעדכן תבנית באתר וורדפרס ונתקלתי בהודעת שגיאה Fatal Error: Maximum Execution Time Exceeded in WordPress. הפתרון במקרה זה הוא נורא פשוט, אך עשוי להיות מתסכל למתחילים. אראה לכם כיצד לתקן את השגיאה Maximum Execution Time Exceeded בוורדפרס.

error-maximum-execution-time

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

כיצד פותרים זאת?

בכדי לשנות את הגבלת הזמן של הרצת סקריפטים ב php, התחברו ב ftp לשרת שלכם, מצאו את קובץ htaccess שנמצא באותו מיקום בו נמצאות הספריות wp-content ו wp-admin. ערכו את הקובץ והוסיפו את השורה:

<IfModule mod_php7.c>
    php_value max_execution_time 300
</IfModule>

הקוד פשוט מגדיר כי זמן ההרצה יהיה 300 שניות (5 דקות), אתם יכולים לשנות אותו כרצונכם. לצורך העניין, תבנית Avada בגירסת 3.8 דורשת להגדיר לפחות 180 שניות על מנת לעבוד בצורה תקינה.

*עליכם לשים לב לגירסת ה PHP בקוד המצורף