Tyyppi: Yleiskeskustelu
Esillä 3 viestiä, 1 - 3 (kaikkiaan 3)
  • Julkaisija
    Kommentit
  • #27888 Vastaa
    Tapio_x
    Avainmestari

    WordPress in sivustoni runko-ohjelmisto. Se on myös runko foorumilisäosalle bbPress. Listaan tässä käyttötarkoituksittain ryhmiteltynä lisäosat.

    WordPress ja bbPress hallintatyökalut ja yleisluonteiset lisäosat:

    bbPress – Moderation Tools

    Lisäosa tuo moderointiin lisävaihtoehtoja.

    Broken Link Checker

    Lisäosa tarkistaa, onko sivustolla toimimattomia linkkejä ja viittauksia mediaan, jota ei löydy.

    CAPTCHA 4WP (Premium)

    Kyseessä on Googlen maksullinen roskapostin esto-ohjelma. Se on suunniteltu erityisesti robottien luomien säikeiden ja kommenttien estämiseen.

    Crawl Optimization

    Lisäosan tarkoitus on poistaa tarpeetonta metadataa sivuilta.

    GD bbPress Tools

    Lisäosalla saa foorumin kirjautuneille käyttäjille joitakin lisätoimintoja, kuten siteerauksen ja kommenttien allekirjoituksen.

    LiteSpeed Cache

    Palvelimen kanssa yhteistyössä toimiva cache-ohjelma, jonka tarkoituksena on nopeuttaa sivujen latautumista.

    Social Login

    Mahdollistaa kirjautumisen joidenkin some-tilien avulla.

    WordPress-tuontiohjelma

    Mahdollistaa tuoda WordPress-sivusto muualta.

    Kaikille näkyvään sisältöön vaikuttavat lisäosat:

    Advanced Editor Tools

    Visuaalinen tekstieditori hallintaosalle (backend) ja näkyville web-sivuille (front-end).

    AI Engine: ChatGPT Chatbot, Content Generator, GPT 3 & 4, Ultra-Customizable

    Tekoälysovellus, joka näkyy foorumiosiolla säikeiden lopussa.

    amr shortcode any widget

    WordPress käyttää usein pikakoodausta tyyliin “[shortcode]”. Kun tekstissä on tietty pikakoodi, korvataan pikakoodi esim. jollakin lisäosalla, esim. OpenAI ChatGPT:llä. Lisäosa mahdollistaa minkä tahansa ns. vempeleen (wigdet) muuttamisen pikakoodiksi. Esim foorumiosion lopussa olevat linkkilistat ovat vempeleitä.

    bbResolutions

    Lisäosalla saa säikeiden ja aiheiden yhteyteen lisäinformaatiota, esim. sen, että onko kyse esim. infosäie. Ks. alla oleva kuva.

    Olen hieman parantanut alkuperäistä lisäosaa, jotta kaikki näyttäisi visuaalisesti paremmalta.

    Breadcrumb NavXT murupolut

    Lisäosan avulla on sivun alkuun ja loppuun lisätty sivun hakemistopolku, ns. “leivänmurut” (breadcrumbs). Sillä helpotetaan sivuston hahmottamista ja sillä navigointia.

    Code Snippets

    Kyse on koodin lisäämisestä foorumiin siten, että se haetaan tietokannasta. Yleensä koodi kirjoitetaan functions.php-tiedostoon. Usein muutettava koodi on kuitenkin mielekästä hakea tietokannasta. Koodi on siis funtions.php-tiedostoa täydentävää koodia. Dataa on vain yhdessä tietueessa.

    Meta Tags

    Tämä lisäosa ei vaikuta itse sivulla näkyvään sisältöön, mutta lisäosa liittyy yksittäisiin sivuihin. Sillä voi luoda hakukoneilla kuvauksen, jonka hakukone näyttää sivusta.

    WP Google Search

    Kyseessä on sivustokohtainen Google haku. Ole sijoittanut sen sivuston päänavigoinnin yhteyteen.

    WP Sitemap Page

    Lisäosa luo automaattisesti erilaisia sivustokarttoja.

    WPForms Lite

    Lisäosalla saa luotua lomakkeita, joille saa Captcha-suojauksen. Tällä hetkellä vain palautesivulla on lisäosalla luotu lomake.

    Mediahallintatyökalut:

    Add From Server

    Jos palvelimella on kuvia, jotka eivät näy mediakirjastossa, lisäosalla voi lisätä ne mediakirjastoon.

    Enable Media Replace

    Lisäosa mahdollistaa kuvan vaihtamisen tiedostonimeä vaihtamatta.

    Image Upload for BBPress

    Mahdollistaa kuvien lisäyksen foorumilla oleviin kommentteihin. Lisäosa on sikäli huonosti suunniteltu, että kuvat eivät listaudu mediakirjastoon automaattisesti vaan ne pitää sinne lisätä Add From Server -lisäosalla.

    Imagify

    Kyseessä on kuvien pakkausohjelma.

    Media Cleaner

    Lisäosalla saa poistettua median, johon ei ole missään linkitetty.

    Regenerate Thumbnails Advanced

    Lisäosalla saa luotua uudestaan mediakirjaston pienoiskuvat.

    ThumbPress – Stop Generating Unnecessary Thumbnails

    WordPress loisi sivustolle ladatuista kuvista 11 kpl eri kokoisia versioita. Lisäosalla saa estettyä tarpeettomien versioiden luonnin.

    Tietokannan hallintaan liittyvät lisäosat:

    Advanced Database Cleaner

    Lisäosalla saa pois tarpeettoman datan nopeasti. Käytössä on muistettava, että automaattitallennukset saattavat olla hyödyllisiä ja ne on ehkä jätettävä.

    Better Search Replace

    Ohjelmalla saa korvattua tietokannassa olevia merkkijonoja toisella merkkijonolla. Toiminto on jossakin muussakin lisäosassa, mutta tällä pääsee toimintoon vaivattomimmin.

    Database Cleaner: Clean, Optimize & Repair

    Monipuolinen ja kehittynyt tietokannan huolto-ohjelma.

    WP-DBManager

    Toinen tietokannan huolto-ohjelma. 

    Jelpataan toisiamme (auttamisperiaatteet). SK, IS, Pelikaanit, Iisakki ja muut julkaisut (virheseurantasivu). 

    Tsättäile ristikostasi kanssani (Tsätin ohjeet KATSO VIDEO)

    Kevätkukkia voi nyt ihailla ja voi kuunnella lintujen laulua!

    - - - Saatan välillä estää kirjautumatta kirjoittamisen. Suosittelen siksi kirjautumista ja sen jälkeen käyttäjäasetuksiin tutustumista. Jos en ole paikalla, kokeile OpenAI ChatGPT -keskustelurobottia - se osaa varsin hyvin suomea! Se löytyy vastauslomakkeen jälkeen (katso esimerkkejä). - - -

    #27891 Vastaa
    Tapio_x
    Avainmestari

    Oma koodi on pääosin  ns. lspsi-teemamsn (child-theme). Hieman koodia on yhdessä Code Snippet-tietueessa, kuten jo edellisessä kommentissa kerroin. Sen lisäksi sitä on yhdessä tekstitiedostossa – siinä on vain HTML-koodattua tekstiä.

    Olen omassa koodauksessani pyrkinyt hyödyntämään WordPressin omia funktioita. Olen tutkinut dokumentaatioita niiden löytämiseksi. Lähes kaikki funktioihin liittyvät ehtolauseet, joissa ehtoina käytetään toisia funktioita, olen käyttänyt WordPressin tai bbPress-lisäosan funktioita.

    1. is_page() – tutkii, onko tavallinen sivu.
    2. is_bbpress() – tutkii onko kyse foorumiosiosta.
    3. bbp_is_single_forum() – tutkii, onko yksittäinen foorumi.
    4. bbp_is_single_topic() – tutkii, onko yksittäinen säie.
    5. is_user_logged_in() – tutkii, onko joku kirjautunut vai ei.
    6. is_front_page() – tutkii, onko etusivu.
    7. comments_open() – tutkii voiko sivulle laittaa kommentteja.
    8. current_user_can(‘activate_plugins’) – tutkii, voiko käyttäjä lisätä lisäosia; käytännössä testataan sitä, onko käyttäjä järjestelmänvalvoja vai ei.

    Muutama poikkeus tähän on.

    Loin mobiiliselainten tunnistamiseen karkean tunnistusfunktion:

    function tap_is_mobile(){
    global $_SERVER;
    $Firefox=strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Firefox’);
    $Tablet=strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Tablet’);
    $Android=strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Android’);
    $Chrome=strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Chrome’);
    $iPad=strpos($_SERVER[‘HTTP_USER_AGENT’], ‘iPad’);
    $iPhone=strpos($_SERVER[‘HTTP_USER_AGENT’], ‘iPhone’);
    $mobile=($Chrome && $Android) || ($Firefox &&($Android || $Tablet)) || $iPad || $iPhone;
    return $mobile;
    }// mobiilitunnistus päättyy

    Se ei kata kaikkia mobiiliselaimia. Sivusto on kuitenkin suunniteltu niin, että tietokone- ja mobiiliversiot poikkeavat hyvin vähän toisistaan. Jos mobiilitunnistus ei kata käytettyä selainta, asialla ei ole suurta merkitystä.

    Toinen on sivuosioiden listaus:

    function pageLists($list){
    global $post;
    $currentUrl=’https://’ . $_SERVER[‘HTTP_HOST’]. $_SERVER[‘REQUEST_URI’];
    $blogi=stristr($currentUrl,’/wordpress/blogikirjoitukset/’);
    $ristikot=stristr($currentUrl,’/wordpress/ristikot/’);
    $muut=stristr($currentUrl,’/wordpress/muut/’);
    );
    $list =array();
    $list[0]=$blogi;
    $list[1]=$ristikot;
    $list[2]=$muut;
    return $list;
    }

    Blogi, ristikot ja muut ovat samaa sivutyyppiä eikä niitä voi tyypin perusteella eritellä. Taulukkomuuttuja puretaan:

    $address = pageLists($list);
    $y=0;
    foreach ($address as $value) {
        if($y==0){$blogi=$value;}
        elseif($y==1){$ristikot=$value;}
        elseif($y==2){$muut=$value;}
        $y++;
        }

    Yksittäisiä muuttujia voi hyödyntää ehtoina, esim.:

    if($blogi){

    }

    Lisäksi foorumin listausjärjestyksen määrittelyssä olen $_GET  ja $_COOKIE muuttujia hyödyntänyt ehdoissa. Ehkä niissä olisi voinut hyödyntää muuttujien käyttöä WordPressin funktioiden välityksellä vähän mutkan kautta. En kokenut listausjärjestyksen muutoksien halintaa näillä muuttujilla ongelmalliseksi. Itse järjestyksen muutos toteutetaan WordPressin sisäisillä funktioilla add_filter() hyödyntäen.

    function setting_my_cookies() {
    if(isset($_COOKIE)){
    if($_GET[“myOrderBy”]){setcookie(“myOrderBy”, $_GET[“myOrderBy”], time()+840000, “/”, “sanaristikkofoorumi.net”, 1);}
    elseif(!isset($_COOKIE[“myOrderBy”])) {setcookie(“myOrderBy”, “default”, time()+840000, “/”, “sanaristikkofoorumi.net”, 1);}
    }
    }

    add_action( ‘init’, ‘setting_my_cookies’,8 );

    // Foorumin aiheiden listaus alkaa
    function my_custom_display_topic_index_query () {
    global $_GET,$_COOKIE;
    if(isset($_GET[‘myOrderBy’]) && !($_GET[‘myOrderBy’]==’default’)){ // if seleted default, it just don’t change anything or returns original listing order
    $args[‘orderby’] =$_GET[‘myOrderBy’];
    if($_GET[‘myOrderBy’]==’post_date’) $args[‘order’] = ‘DESC’;
    else $args[‘order’] = ‘ASC’;
    }elseif(isset($_COOKIE[‘myOrderBy’]) && !($_COOKIE[‘myOrderBy’]==’default’)){
    $args[‘orderby’] =$_COOKIE[‘myOrderBy’];
    if($_COOKIE[‘myOrderBy’]==’post_date’) $args[‘order’] = ‘DESC’;
    else $args[‘order’] = ‘ASC’;
    }
    return $args;
    }

    if((isset($_GET[‘myOrderBy’]) && !($_GET[‘myOrderBy’]==’default’)))
    add_filter(‘bbp_before_has_topics_parse_args’, ‘my_custom_display_topic_index_query’ );
    elseif(isset($_COOKIE[‘myOrderBy’]) && !($_COOKIE[‘myOrderBy’]==’default’) && !isset($_GET[‘myOrderBy’]))
    add_filter(‘bbp_before_has_topics_parse_args’, ‘my_custom_display_topic_index_query’ );

    function printSelections(){
    global $_SERVER,$_GET,$_COOKIE;
    $selval=$_GET[‘myOrderBy’];
    $extraClass=’ active-button’;
    if(isset($selval)){
    if($selval==’post_date’) $extraClass2=$extraClass;
    elseif($selval==’post_title’) $extraClass3=$extraClass;
    elseif($selval==’default’) $extraClass1=$extraClass;
    }elseif(isset($_COOKIE[‘myOrderBy’])){
    if($_COOKIE[‘myOrderBy’]==’post_date’) $extraClass2=$extraClass;
    elseif($_COOKIE[‘myOrderBy’]==’post_title’)
    $extraClass3=$extraClass;
    elseif($_COOKIE[‘myOrderBy’]==’default’)
    $extraClass1=$extraClass;
    }elseif(!isset($selval) && !isset($_COOKIE[‘myOrderBy’])){
    $extraClass1=$extraClass;
    }
    $currentUrl=’https://’. $_SERVER[‘HTTP_HOST’]. $_SERVER[‘REQUEST_URI’];
    $myUrlPos= stripos($currentUrl,’?’);
    if($myUrlPos)
    $currentUrl=substr($currentUrl,0,$myUrlPos);
    return ‘<div class=”queries”>
    <table class=”querytable” style=”width:auto!important;margin:0!important;padding:0!important;border-width:0″><tr>
    <th>Järjestys:</th><td style=”padding:0 3px!important”>
    <a id=”orderbutton1″ class=”subscription-toggle orderbutton’.$extraClass1.'” href=”‘.$currentUrl.’?myOrderBy=default” style=”padding-left:6px!important”>Kommentoitu</a></td><td style=”padding:0 3px 0 0!important”><a id=”orderbutton2″ class=”subscription-toggle orderbutton’.$extraClass2.'” href=”‘.$currentUrl.’?myOrderBy=post_date” style=”padding-left:6px!important”>Aloitettu</a></td><td style=”padding:0 3px 0 0!important”><a id=”orderbutton3″ class=”subscription-toggle orderbutton’.$extraClass3.'” href=”‘.$currentUrl.’?myOrderBy=post_title” style=”padding-left:6px!important”>Otsikko</a></td></tr></table></div>’;
    }//foorumin aiheiden listaus loppuu

    Jelpataan toisiamme (auttamisperiaatteet). SK, IS, Pelikaanit, Iisakki ja muut julkaisut (virheseurantasivu). 

    Tsättäile ristikostasi kanssani (Tsätin ohjeet KATSO VIDEO)

    Kevätkukkia voi nyt ihailla ja voi kuunnella lintujen laulua!

    - - - Saatan välillä estää kirjautumatta kirjoittamisen. Suosittelen siksi kirjautumista ja sen jälkeen käyttäjäasetuksiin tutustumista. Jos en ole paikalla, kokeile OpenAI ChatGPT -keskustelurobottia - se osaa varsin hyvin suomea! Se löytyy vastauslomakkeen jälkeen (katso esimerkkejä). - - -

    #27893 Vastaa
    Tapio_x
    Avainmestari

    CSS ja JavaScript

    Ulkonäköön vaikuttavissa CSS:ssä olen pyrkinyt poistamaan käytöstä tarpeettomia tyylitiedostoja, esim.:

    add_action(‘wp_enqueue_scripts’, function() {

    wp_dequeue_style( ‘bbp-default’);
    wp_dequeue_style( ‘moderation-tools-bbpress’);

    },99);

    Ehtolauseilla olen antanut osan CSS:stä vain bbPress lisäosaa tai tavallisia sivuja koskevaksi. Tarpeettomia CSS-tiedostoja pyrin välttämään. Muukin CSS on tarpeen vaatiessa kohdistettua. Jonkin verran kohdistettua CSS:ää on erillistiedostojen sijaan <style></style> tägejä hyödyntäen.

    Vastaavalla tavalla olen poistanut turhia JavaScript-tiedostoja:

    if(is_bbpress()){
    add_action(‘wp_enqueue_scripts’, function(){
    wp_deregister_script( ‘screenr-plugin’ );
    wp_deregister_script( ‘bootstrap’ );
    wp_deregister_script( ‘screenr-gallery-carousel’ );
    wp_deregister_script( ‘screenr-gallery-masonry’);
    wp_deregister_script( ‘screenr-gallery-justified’);
    }, 99);}

    Lisäykset ja mallinteet

    Lisäykset tulevat joko PHP-koodiin (pääosin functions.php-tiedostossa) tai PHP- koodia ja HTML-koodia hyödyntäviin erillistiedostoihin, mallinnetiedostoihin.

    PHP-koodi lisäyksissä ja mallinnetiedostoissa hyödynnän WordPressin add_action()-funktiota, alla esim. pelkän PHP-koodin käytöstä functions.php-tiedostossa:

    add_action( ‘wp_head’, function () {… // lisätään jotain sivun HEAD-osaan; tässä on käytetty ns. anonyymiä funktiota; voi käyttää toisena parametrina myös nimettyä funktiota

    },3 );

    Mallinnetiedostoissa on do_action()-funktio. Sille on pari puhtaassa PHP-koodissa, esim.:

    do_action(‘bbp_template_before_single_forum’); // erillistiedostossa

    add_action(‘bbp_template_before_single_forum’, ‘jokin_funktio’); // functions.php-tiedostostossa; toinen parametri on funktion nimi, mutta voi käyttää myös ns. anonyymejä funktioita

    do_action() on eräälainen “koukku”, joka nappaa muualla määritellyn sisällön. Koukkuja voi itse määritellä vapaasti ja niitä voi varsin poistaa vapaasti. Sisältö luodaan yksinkertaisilla echo-komennolla.

    Tämä on yleisin tapa lisätä omaa koodia WordPressin ydintoimintoja hyödyntäen.

    Joissakin tapauksissa add_filter() voisi myös hyödyntää. Sille ei ole vastineita erillisissä mallinnetiedostoissa.

    function change_the_content($content) {
    return adv().'<div>’.$content.'</div>’;
    }// sisällön alkuun saa koodia, vaikka ei ole do_action()-koukun hyödyntämismahdollisuutta

    add_filter( ‘the_content’, ‘change_the_content’,10);

    add_filter toimii return-komennolla. Sisältö koostetaan lopuksi yksittäisten echo-komentojen sijaan yhdellä komennolla, jossa voi olla muuttujia, funktioita tai suoraan kirjoitettua koodia. Yllä oleva koodi ei enää ole käytössä. add_filter() ei pääsääntöisesti ole tarkoitettu sisällön tuottamiseen.

    Näiden yhteyteen voi luoda omia pikakoodeja:

    add_shortcode( ‘pikakoodin_nimi’, ‘pikakoodin_funktio’ );

    Pikakoodi merkitään [pikakoodin_nimi].

    Pikakoodi luo sisällön return-toiminnolla samaan tapaan kuin edellä olleessa esimerkissä add_filter()-funktio. Mikäli pikakoodeja haluaa käyttä add_action() kanssa, pitää laittaa pikakoodi do_shortcode()-funktion sisälle, esim.:

    echo ‘<div>’.do_shortcode(‘pikakoodin_nimi’);

    Omia pikakoodeja minulla ei ole käytössä mutta ns. vimpaimia niillä olen upottanut muuhun HTML-koodiin.

    add_filter() käytetään mm. säännöllisesti toistuvien merkkien vaihtamiseen toisiksi merkeiksi tai merkkien poistamiseen, esim.:

    add_filter(‘bbp_after_list_forums_parse_args’, function($args) {
    $args[‘separator’] = ”;
    return $args;
    });
    add_filter(‘bbp_after_get_topic_admin_links_parse_args’, function($args) {
    $args[‘sep’] = ”;
    return $args;
    });
    add_filter(‘bbp_after_get_reply_admin_links_parse_args’, function($args) {
    $args[‘sep’] = ”;
    return $args;
    });

    Add_filter käytetään muihinkin muutoksiin. Se on luonteeltaan muuntelufunktio. Visuaalisen editorin joitakin piirteitä voi sillä hallita.

    Kaksi palaa olen lainannut bbPress Style Pack -lisäosasta. Lisäosa kokonaisuudessa sisälsi niin paljon turhaa, ettei koko lisäosaa kannattanut asentaa. Useimpia lisäosia saa varsin vapaasti hyödyntää, kuten bbPress Style Pack lisäosaa.

    Jelpataan toisiamme (auttamisperiaatteet). SK, IS, Pelikaanit, Iisakki ja muut julkaisut (virheseurantasivu). 

    Tsättäile ristikostasi kanssani (Tsätin ohjeet KATSO VIDEO)

    Kevätkukkia voi nyt ihailla ja voi kuunnella lintujen laulua!

    - - - Saatan välillä estää kirjautumatta kirjoittamisen. Suosittelen siksi kirjautumista ja sen jälkeen käyttäjäasetuksiin tutustumista. Jos en ole paikalla, kokeile OpenAI ChatGPT -keskustelurobottia - se osaa varsin hyvin suomea! Se löytyy vastauslomakkeen jälkeen (katso esimerkkejä). - - -

Esillä 3 viestiä, 1 - 3 (kaikkiaan 3)
Vastaa aiheeseen: Foorumissani käytössä olevat lisäosat ja oma koodaus

Kun luot uuden aiheen, laita aina siihen sisältöä, ettei aihetta luokitella roskapostiksi. Voit käyttää muotoilussa BBCode-merkintöjä.
Et voi käyttää muotoilussa edistyneempiä (advanced) BBCode-merkintöjä. Tallennettaessa ne poistetaan.

Tietosi: