ארכיון: סניפטס

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

הצגת עמוד התשלום למרות שעגלת הקניות ריקה

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

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

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

add_filter( 'woocommerce_checkout_redirect_empty_cart', '__return_false' );
add_filter( 'woocommerce_checkout_update_order_review_expired', '__return_false' );

ביטול והסרת סכמה (Schema) ונתונים מובנים של Yoast

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

בגירסאות Yoast הנמוכות מגירסה 11.0 ניתן להסיר את הסכמה באמצעות הפילטר הבא:

function savvy_remove_yoast_json($data){
	$data = array();
	return $data;
}
add_filter('wpseo_json_ld_output', 'savvy_remove_yoast_json', 10, 1);

ועבור גירסאות Yoast הגבוהות מ 11.0 באמצעות פילטר זה:

add_filter( 'wpseo_json_ld_output', '__return_false' );

הצגת תאריך יחסי בוורדפרס

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

# For posts & pages #
<?php echo human_time_diff(get_the_time('U'), current_time('timestamp')) . ' ago'; ?>

# For comments #
<?php echo human_time_diff(get_comment_time('U'), current_time('timestamp')) . ' ago'; ?>

הצגת המספר הכולל של הפוסטים ב CPT מסויים

סניפט קצר זה מאפשר לכם להציג את המספר הכולל של הפוסטים עבור סוג תוכן ספציפי (Custom Post type). הוסיפו את הקוד היכן שאתם רוצים להציג את מספר הפוסטים ושנו את POST-TYPE-NAME לשם סוג התוכן שאת מספרו אתם מעוניינים להציג.

<?php
     // Get total number of posts in POST-TYPE-NAME
     $count_posts = wp_count_posts('POST-TYPE-NAME');
     $total_posts = $count_posts->publish;
     echo $total_posts;
?>

שינוי אורך התקציר הדיפולטיבי של וורדפרס

הפילטר הבא יאפשר לכם לקבוע את אורך התקציר שוורדפרס תציג בקריאה לפונקציה the_excerpt בדוגמה הבאה אנו קובעים כי אורך התקציר יהיה 20 תווים בלבד:

function new_excerpt_length($length) {
     return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');

כיצד להציג סוגי תוכן מותאמים בתוצאות החיפוש

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

function custom_post_type_search( $query ) {
     if ($query->is_search) {
          $query->set('post_type', array( 'post', 'myCustomPostType1', 'myCustomPostType2', 'myCustomPostType3'));
     }
     return $query;
}
add_filter( 'pre_get_posts', 'custom_post_type_search' );

אם אתם מעוניינים באפשרויות חיפוש והצגת תוצאות חיפוש מתוחכמות יותר תנו מבט בפוסט ״שיפור מנגנון החיפוש באמצעות Relevanssi״.

הצגת תוכן עבור מובייל בלבד באמצעות wp_is_mobile

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

<?php  if( wp_is_mobile()){  ?>
// mobile stuff goes here
<?php } else { ?>
// desktop stuff goes here
<?php  } ?>

שימו לב! – עליכם לשים לב כי מנגנון הקאש שלכם מבצע Caching בנפרד עבור מובייל ועבור דסקטופ. ניתן לבצע זאת למשל באמצעות התוסף WP-Rocket.

הוספת קלאס לפוסט הראשון בלולאה של וורדפרס

נאמר ואתם מעוניינים להדגיש את הפוסט הראשון בלולאה בצורה כלשהי, באפשרותכם להוסיף לו קלאס מסויים ואז לעצב אותו בעזרת CSS. ניתן לבצע זאת בצורה הבאה (<code>functions.php</code>):

function wps_first_post_class( $classes ) {
    global $wp_query;
    if( 0 == $wp_query->current_post )
        $classes[] = 'first';
        return $classes;
}
add_filter( 'post_class', 'wps_first_post_class' );

קביעת מבנה הקישורים באמצעות קוד

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

function set_permalink(){
     global $wp_rewrite;
     $wp_rewrite->set_permalink_structure('/%year%/%monthnum%/%postname%/');
}
add_action('init', 'set_permalink');

שימו לב כי גם במקרה זה על mod_rewrite להיות פעיל בשרת.

עוד על מבנה הקישורים של וורדפרס בפוסט הבא: בחירת מבנה קישורים (Permalinks) נכון לטובת SEO.

הוספת תקציר (excerpt) לעמודים בוורדפרס

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

/**** BEGIN HERE ****/
if (current_user_can('contributor') && !current_user_can('upload_files'))
    add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');
}

הצגת ענן תגיות בתבניות וורדפרס

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

הוסיפו את הקוד הבא היכן שתרצו בתבנית שלכם ושנו את הפרמטרים בהתאם:

<?php wp_tag_cloud(array(
     'smallest' => 10, // size of least used tag
     'largest' => 18, // size of most used tag
     'unit' => 'px', // unit for sizing
     'orderby' => 'name', // alphabetical
     'order' => 'ASC', // starting at A
     'exclude' => 6 // ID of tag to exclude from list
     ));
?>

הסרת סרגל הכלים (Toolbar) של וורדפרס

הפילטר הבא מאפשר להסיר את סרגל הכלים של וורדפרס (WordPress Toolbar). הוסיפו את הקוד לקובץ functions.php:

add_filter('show_admin_bar', '__return_false');

כיצד לאפשר לתורמים (Contributers) להעלות תמונות

כברירת מחדל וורדפרס אינה מאפשרת למשתמשים בעלי הרשאות של תורמים (Contributers) להעלות תמונות.

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

<?php
/**** BEGIN HERE ****/
if (current_user_can('contributor') && !current_user_can('upload_files'))
add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
$contributor = get_role('contributor');
$contributor->add_cap('upload_files');
}

ביטול אפשרות החיפוש בווורדפרס

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

function fb_filter_query( $query, $error = true ) {
    if ( is_search() ) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = false;
        // to error
        if ( $error == true )
            $query->is_404 = true;
    }
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

לחילופין – אם אתם מעוניינים לשדרג את אפשרויות החיפוש של וורדפרס אני מאד ממליץ להשתמש בתוסף Relevanssi.