Inhoud bemarking

WordPress: sluit JavaScript of PHP dinamies in deur die pos-ID te gebruik

Een van die pogings waaraan ek hierdie jaar regtig gewerk het Martech Zone bied 'n paar eenvoudige webtoepassings wat nuttig is vir ons besoekers. Daar is 'n paar basiese ontwikkeling hieragter wat beide PHP en JavaScript insluit (meestal jQuery).

Met WordPress, is daar egter nie 'n baie gerieflike manier om bladsye of plasings te skryf met die spesifieke kode wat jy in die kop wil hê nie. Ek wil nie die kode werfwyd hê nie en wil nie my werf vertraag met 'n reusagtige skriflêer nie.

Toe ek die eerste keer die toepassings begin skryf het, het ek alles gedoen Organisch van my kind tema en gebruik is_single met die pos ID-nommer. Na 'n hele paar toepassings het my functions.php-lêer egter nogal onstuimig begin raak.

'n Handige oplossing waarmee ek vorendag gekom het deur die WordPress API te gebruik, was om 'n apps gids na my kind-tema waarvan die inhoud gelees word. Wanneer die lêernaam ooreenstem met die pos-ID, bevat dit die JavaScript- en/of PHP-lêer gebaseer op die lêeruitbreiding. Sommige van my programme het pasgemaakte PHP, sommige net JavaScript, en sommige het albei. Hierdie skrif werk vir enige scenario!

Sluit JavaScript of PHP-lêer op Pos ID in

Hier is die goeie oplossing waarmee ek vorendag gekom het. Ek wil byvoeg dat ek 'n paar gekry het hulp van ChatGPT ook op hierdie oplossing! Nog 'n probleem hiermee was dat ek nie die funksie wou uitvoer met elke enkele besoeker wat elke enkele bladsy of plasing op die webwerf tref nie, so ek gebruik WordPress' verbygaande metode om die resultate in die databasis te kas ... in hierdie geval vir 1 uur (3600 sekondes). Ek kan dit uiteindelik verander na een keer per dag, maar 'n uur is goed vir nou.

function include_app_file() {
    // Check if this is a single post
    if (is_single()) {
        // Get the file path of the "apps" subdirectory from the transient cache
        $apps_dir = get_transient('apps_dir');
        
        // If the cache is empty, get the file path and store it in the cache
        if (false === $apps_dir) {
            $apps_dir = get_stylesheet_directory() . '/apps/';
            set_transient('apps_dir', $apps_dir, 3600);
        }
        
        // Construct the file names based on the post ID
        $js_file_name = get_the_ID() . '.js';
        $php_file_name = get_the_ID() . '.php';
        
        // Check if the JS file exists
        if (file_exists($apps_dir . $js_file_name)) {
            // If the JS file exists, include it in the head section of the page
            wp_enqueue_script(get_the_ID(), get_stylesheet_directory_uri() . '/apps/' . $js_file_name, array(), null, true);
        }
        
        // Check if the PHP file exists
        if (file_exists($apps_dir . $php_file_name)) {
            // If the PHP file exists, include it
            include($apps_dir . $php_file_name);
        }
    }
}
add_action('wp_head', 'include_app_file');

Nou hoef ek nie eers aan my functions.php-lêer te raak nie en my JavaScript- en PHP-funksies is netjies georganiseer in my apps gids! Ek is nog nie klaar met die migreer van al die toepassings nie ... maar ek sal binnekort wees en dan sal ek vinnig meer toepassings kan ontwikkel met baie minder moeite.

As jy hierdie benadering wil gebruik, hoef jy net hierdie kode by jou kind-tema se functions.php-lêer te voeg en dan 'n gids by te voeg genaamd app na jou kind-tema-lêergids. Terwyl jy jou bladsy ontwikkel waar jy 'n spesifieke Javascript-lêer of PHP-lêer wil insluit, voeg jy net daardie lêers by met die Pos ID-nommer as die naam.

As 'n voorbeeld, ek het 'n toepassing wat skakel rye om na CSV of CSV na rye. Hierdie spesifieke toepassing gebruik slegs JavaScript (en jQuery), so ek het net 'n lêer by die apps gids. Die pos-ID is 123884, so ek het die lêer bygevoeg 123884.js na my toepassingsgids, my kode geplak, en ek was aan die gang!

Kodebeperkings

Ek het wel een beperking met hierdie funksie ervaar en dit was die integrasie van my e-pos swartlys kontroleerder. Die probleem is dat daardie kode gebruik WordPress' AJAX funksionaliteit en ek moes die funksies binne functions.php verklaar eerder as 'n dinamiese include-lêer op die Post ID.

As jy hierdie kode wil gebruik, gaan daarvoor … Ek sal net 'n bietjie krediet waardeer of dalk kan jy 'n wenk na my kant stuur!

Stuur Douglas Karr n wenk!

Openbaarmaking: Martech Zone gebruik sy geaffilieerde skakel vir WordPress in hierdie artikel.

Douglas Karr

Douglas Karr is CMO van Maak INSIGTE oop en die stigter van die Martech Zone. Douglas het tientalle suksesvolle MarTech-opstartondernemings gehelp, het gehelp met die omsigtigheidsondersoek van meer as $5 miljard in Martech-verkrygings en -beleggings, en gaan voort om maatskappye te help met die implementering en outomatisering van hul verkoops- en bemarkingstrategieë. Douglas is 'n internasionaal erkende digitale transformasie en MarTech deskundige en spreker. Douglas is ook 'n gepubliseerde skrywer van 'n Dummie-gids en 'n besigheidsleierskapboek.

verwante Artikels

Terug na bo knoppie
Sluiting

Advertensieblok bespeur

Martech Zone is in staat om hierdie inhoud gratis aan u te verskaf, want ons verdien ons webwerf deur advertensie-inkomste, geaffilieerde skakels en borgskappe. Ons sal dit waardeer as jy jou advertensieblokkering sal verwyder terwyl jy ons webwerf bekyk.