פרטי השיעור
הקדמה
טעינה אסינכרונית של CSS ו-JavaScript יכולה לשפר את ביצועי האתר בצורה משמעותית, במיוחד באתרים מבוססי וורדפרס. בקורס זה נלמד כיצד לבצע טעינה אסינכרונית של CSS ו-JavaScript באתר וורדפרס באמצעות כלים וטכניקות מתקדמות.
נושא 1: מבוא לטעינה אסינכרונית
מהי טעינה אסינכרונית?
טעינה אסינכרונית מאפשרת לטעון קבצים במקביל לתוכן העיקרי של הדף, מבלי לחסום את תהליך הטעינה של שאר הדף. זה יכול לשפר את זמן הטעינה הכולל של הדף ולשפר את חוויית המשתמש.
מדוע להשתמש בטעינה אסינכרונית?
- שיפור ביצועי האתר.
- שיפור דירוגי SEO.
- חוויית משתמש טובה יותר.
נושא 2: טעינה אסינכרונית של CSS בוורדפרס
שימוש בפילטרים ואקשנים של וורדפרס
ניתן להשתמש בפילטרים ואקשנים של וורדפרס כדי לטעון CSS באופן אסינכרוני.
דוגמה לטעינת CSS אסינכרונית בקובץ functions.php
function async_load_css() {
// טעינת קובץ CSS באופן אסינכרוני
wp_enqueue_style('example-style', get_stylesheet_uri(), array(), null, 'all');
add_filter('style_loader_tag', 'add_async_attribute', 10, 2);
}
add_action('wp_enqueue_scripts', 'async_load_css');
// הוספת תכונת preload לקובץ ה-CSS
function add_async_attribute($html, $handle) {
if ($handle === 'example-style') {
return str_replace("rel='stylesheet'", "rel='preload' as='style' onload='this.onload=null;this.rel=\"stylesheet\"'", $html);
}
return $html;
}
נושא 3: טעינה אסינכרונית של JavaScript בוורדפרס
שימוש בפרמטר async ו-defer
ניתן להשתמש בפרמטרים async ו-defer לטעינת JavaScript באופן אסינכרוני.
דוגמה לטעינת JavaScript עם async בקובץ functions.php
function async_load_js() {
// טעינת קובץ JavaScript עם async
wp_enqueue_script('example-script', get_template_directory_uri() . '/js/example.js', array(), null, true);
add_filter('script_loader_tag', 'add_async_attribute_to_js', 10, 2);
}
add_action('wp_enqueue_scripts', 'async_load_js');
// הוספת תכונת async לקובץ ה-JavaScript
function add_async_attribute_to_js($tag, $handle) {
if ($handle === 'example-script') {
return str_replace(' src', ' async="async" src', $tag);
}
return $tag;
}
דוגמה לטעינת JavaScript עם defer בקובץ functions.php
function defer_load_js() {
// טעינת קובץ JavaScript עם defer
wp_enqueue_script('example-script', get_template_directory_uri() . '/js/example.js', array(), null, true);
add_filter('script_loader_tag', 'add_defer_attribute_to_js', 10, 2);
}
add_action('wp_enqueue_scripts', 'defer_load_js');
// הוספת תכונת defer לקובץ ה-JavaScript
function add_defer_attribute_to_js($tag, $handle) {
if ($handle === 'example-script') {
return str_replace(' src', ' defer="defer" src', $tag);
}
return $tag;
}
נושא 4: שימוש בתוספים לטעינה אסינכרונית
תוסף Async JavaScript
תוסף Async JavaScript מאפשר לנהל בקלות את טעינת קבצי ה-JavaScript באופן אסינכרוני או עם defer.
התקנת התוסף
- התקינו והפעילו את התוסף Async JavaScript מהמאגר התוספים של וורדפרס.
- גשו ללוח הבקרה של וורדפרס, בחרו באפשרות Async JavaScript.
- סמנו את האפשרויות המתאימות לטעינת קבצים עם async או defer.
נושא 5: טעינה דינמית של תוכן באמצעות AJAX
שימוש ב-AJAX לטעינת תוכן דינמי
ניתן להשתמש ב-AJAX כדי לטעון תוכן דינמי לאחר טעינת הדף הראשי.
דוגמה לטעינת תוכן באמצעות AJAX בקובץ functions.php
// פונקציה לטעינת התוכן באמצעות AJAX
function load_dynamic_content() {
check_ajax_referer('ajax-nonce', 'nonce');
// תהליך עיבוד התוכן הדינמי
$response = array('message' => 'תוכן דינמי נטען בהצלחה');
wp_send_json_success($response);
}
add_action('wp_ajax_load_dynamic_content', 'load_dynamic_content');
add_action('wp_ajax_nopriv_load_dynamic_content', 'load_dynamic_content');
דוגמה ל-JavaScript המפעיל את קריאת ה-AJAX
document.addEventListener('DOMContentLoaded', function() {
// ביצוע קריאת AJAX לטעינת תוכן דינמי
fetch(ajaxurl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'action=load_dynamic_content&nonce=' + ajax_object.nonce
})
.then(response => response.json())
.then(data => {
if (data.success) {
document.getElementById('dynamic-content').innerHTML = data.data.message;
}
})
.catch(error => console.error('שגיאה בטעינת התוכן:', error));
});
דוגמה לקובץ PHP המפעיל את ה-AJAX
<?php
// הוספת nonce ל-JavaScript
function add_ajax_script() {
wp_enqueue_script('ajax-script', get_template_directory_uri() . '/js/ajax-script.js', array('jquery'), null, true);
wp_localize_script('ajax-script', 'ajax_object', array(
'ajaxurl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('ajax-nonce')
));
}
add_action('wp_enqueue_scripts', 'add_ajax_script');
?>