- Tämä aihe sisältää 2 vastaukset, 1 ääni, ja päivitettiin viimeksi 11.5.2023 16:23
Tapio_x toimesta.
- JulkaisijaArtikkelit Kommentit
Tapio_x
AvainmestariWordPress 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ä). - - -
Tapio_x
AvainmestariOma 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.
- is_page() – tutkii, onko tavallinen sivu.
- is_bbpress() – tutkii onko kyse foorumiosiosta.
- bbp_is_single_forum() – tutkii, onko yksittäinen foorumi.
- bbp_is_single_topic() – tutkii, onko yksittäinen säie.
- is_user_logged_in() – tutkii, onko joku kirjautunut vai ei.
- is_front_page() – tutkii, onko etusivu.
- comments_open() – tutkii voiko sivulle laittaa kommentteja.
- 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äättyySe 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 loppuuJelpataan 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ä). - - -
Tapio_x
AvainmestariCSS 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ämismahdollisuuttaadd_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ä). - - -
Connect with:
Sulje lisäikkuna