Search

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

ווקומרס: הפנייה לכתובת URL ספציפית בהסרת קופון

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

/*
 * Redirects user to a specific page upon coupon removal.
 */
function action_woocommerce_removed_coupon( $coupon_code ) { 
    // Redirection...
    wp_redirect( $url ); // Replace $url by your page URL.
    exit; 
}; 

// add the action 
add_action( 'woocommerce_removed_coupon', 'action_woocommerce_removed_coupon', 10, 1 );

ביטול ה Lightbox הדיפולטיבי בווקומרס 3.0+

הנה דרך קצרה לבטל את אפשרות ה Lightbox בווקומרס 3.0 ומעלה. הוסיפו את הקוד הבא לקובץ functions.php:

add_action( 'after_setup_theme', 'remove_wc_gallery_lightbox', 100 );

function remove_wc_gallery_lightbox() { 
  remove_theme_support( 'wc-product-gallery-lightbox' );
}

הסרת הגירסה של וורדפרס ב Header

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

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

// remove version info from head and feeds
function sv_complete_version_removal() {
    return '';
}
add_filter('the_generator', 'sv_complete_version_removal');

הפניית נרשמים חדשים לעמוד ספציפי

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

function sv_registration_redirect(){
    return home_url( '/finished/' );
}
add_filter( 'registration_redirect', 'sv_registration_redirect' );

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

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

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

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


function sv_allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor->add_cap('upload_files');
}

if (current_user_can('contributor') && !current_user_can('upload_files'))
    add_action('admin_init', 'sv_allow_contributor_uploads');

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

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

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

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+?src=[\'"]([^\'"]+)[\'"].*?>/i', $post->post_content, $matches);
  $first_img = $matches[1][0];

  if(empty($first_img)) {
    $first_img = "/path/to/default.png";
  }
  return $first_img;
}

ובכדי להשתמש בזה בתוך הלולאה של וורדפרס:

if ( get_the_post_thumbnail($post_id) != '' ) {

  echo '<a href="'; the_permalink(); echo '" class="thumbnail-wrapper">';
   the_post_thumbnail();
  echo '</a>';

} else {

 echo '<a href="'; the_permalink(); echo '" class="thumbnail-wrapper">';
 echo '<img src="';
 echo catch_that_image();
 echo '" alt="" />';
 echo '</a>';

}

הוספת שם הקטגוריה ל body_class

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

אך משום מה וורדפרס אינה מוסיפה קלאס המתאר באיזו קטגוריה (או קטגוריות) אתם נמצאים בעמוד פוסט יחיד (נאמר single.php). בכדי להוסיך את השם (היפה) של הקטגוריה לאותה תגית body ניתן להשתמש בקוד הבא:

function sv_add_category_to_single($classes) {
    if (is_single() ) {
        global $post;
        foreach((get_the_category($post->ID)) as $category) {
            // add category slug to the $classes array
            $classes[] = $category->category_nicename;
        }
    }
    // return the $classes array
    return $classes;
}
add_filter('body_class','sv_add_category_to_single');

קבלת הקישור לתמונה הראשית (featured image url)

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

add_theme_support('post-thumbnails'); 

גם די פשוט להציג תמונה זו כ HTML המייצר את תגית ה <img> הרצויה:

get_the_post_thumbnail();

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

המשתנה $thumb_url יהיה הקישור לתמונה הראשית של הפוסט המדובר…

הוספת קלאס לקישורים המיוצרים ע״י next_posts_link ו previous_posts_link

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

add_filter('next_posts_link_attributes', 'posts_link_attributes');
add_filter('previous_posts_link_attributes', 'posts_link_attributes');

function posts_link_attributes() {
  return 'class="styled-button"';
}

שינוי סדר הפוסטים עבור ארכיון (archive.php)

הדרך הפשוטה ביותר לשנות את סדר הפוסטים בעמוד המשתמש בקובץ archive.php יהיה להשתמש בהוק pre_get_posts. עליכם במקרה זה לוודא שהשאילתא (query) היא זו לה אתם רוצים לבצע את השינוי כמובן.

שימוש בתנאי is_archive או is_post_type_archive אמור לספק במקרה זה. הנה דוגמה:

function sv_change_sort_order($query){
    if(is_archive()):
        //If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type )
        //Set the order ASC or DESC
        $query->set( 'order', 'ASC' );
        //Set the orderby
        $query->set( 'orderby', 'title' );
    endif;
}
add_action( 'pre_get_posts', 'sv_change_sort_order');

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