skrip enqueue wp – Memuat file dependensi terbaru di functions.php

Saya memiliki skrip yang diantrekan dalam file functions.php sehingga skrip hanya dimuat pada halaman tertentu (saya memotong sebagian besar dalam kode di bawah)

add_action( 'template_redirect', 'plugin_is_page' );
function plugin_is_page() {
    if ( is_search() ) {
        wp_enqueue_script('ads-search', get_template_directory_uri() . '/js/ads-search.js', array( 'ads' ), $timestamp = filemtime( plugin_dir_path( __FILE__ ) . '/js/ads-search.js' ), true);
    }
}

Sekarang masing-masing menggunakan ketergantungan ads.js file witch berisi berbagai objek (iklan) dan fungsi untuk menampilkannya. Dalam file seperti ads-search.js saya hanya memanggil fungsi tersebut, seperti dalam contoh ini, halaman hasil pencarian. Saya perlu memuat versi terbaru dari setiap file setiap saat. Untuk saat ini diantrikan seperti ini, dengan banners.js file karena dimuat di setiap halaman.

function my_custom_theme_scripts() {
    $ads_version = filemtime( get_stylesheet_directory() . '/js/ads.js' );
    $banners_version = filemtime( get_stylesheet_directory() . '/js/ads-banners.js' );

    wp_enqueue_script(
        'ads',
        get_stylesheet_directory_uri() . '/js/ads.js',
        array(),
        $ads_version,
        true
    );
    wp_enqueue_script(
        'ads-banners',
        get_stylesheet_directory_uri() . '/js/ads-banners.js',
        array( 'ads' ),
        $banners_version,
        true
    );
}
add_action( 'wp_enqueue_scripts', 'my_custom_theme_scripts' );

Jadi bagaimana cara menggunakan fungsi yang dikodekan dalam dependensi ads.js file di semua skrip saya suka ads-banners.js atau ads-search.js? Mengimpornya tidak akan berfungsi meskipun saya memuat skrip sebagai modul karena saya perlu menyertakan versi dalam baris impor dan melakukan hal yang sama import { selectADS, sidebarADS, mobileADS } from "./ads.js"; tidak akan bekerja.

Semua fungsi dikodekan dengan cara yang sama, contoh satu:

export async function selectADS(adNumber, element, adsArray) {
  let usedNum = [];
  let i = 0;
  while (1) {
    var randomNum = Math.floor(Math.random() * adsArray.length);

    if (!usedNum.includes(randomNum)) {
      let link = document.createElement("a");
      link.setAttribute("href", adsArray[randomNum].link);
      link.setAttribute("target", "_blank");

      let ad = document.createElement("img");
      ad.setAttribute("alt", adsArray[randomNum].alt);
      ad.setAttribute("src", adsArray[randomNum].src);

      element.appendChild(link);
      link.appendChild(ad);

      usedNum.push(randomNum);
      i++;
      if (i == adNumber) break;
    }
  }
}

Ketika saya mencoba menelepon selectADS di file lain yang dilemparnya function is not defined error

Leave a Reply

Your email address will not be published. Required fields are marked *