Support » Lisäosat ja muokkaukset » Käyttäjätietojen asettaminen lomakekentän oletusarvoksi

  • Moi

    Onko WP-maailmassa samantapaisia token-arvoja kuten Drupalissa esim. käyttäjän id ym, joita voi kutsua tyyliin [user:uid]?

    Kenties shortcode toiminto, mutta toimiiko oletusarvoisesti myös lomakekenttien kanssa?

    Ja jos ei toimi oletusarvoisesti lomakkeissa, niin kuinka vaativa on toteuttaa sellainen ”oletuskorvausarvotoiminto” lomakekentille?

Esillä 5 vastausta, 1 - 5 (kaikkiaan 5)
  • Moderator Mikko Saari

    (@msaari)

    Ei taida suoraan löytyä shortcodea tuohon, mutta triviaalisti onnistuu kuitenkin: <?php echo get_current_user_id(); ?>

    Jos haluaa shortcoden tuosta, niin se käy näin:

    add_shortcode('user_uid', 'user_uid_shortcode');
    function user_uid_shortcode() {
        return get_current_user_id();
    }

    ja nyt toimii [user_uid]-shortcode.

    Thread Starter lifespan

    (@lifespan)

    Löysinkin plugarin user scoden toteutuksille, mutta vielä pitäisi koukuttaa ne oletusarvoiksi lomakkeelle, joilla luodaan uutta sisältöä.

    Samalla päädyin ihmettelemään Podsin dokumentaatiota, kun etsin mielestäni hyvinkin keskeistä API kutsua, jolla saisi esim User objektiin tehdyt laajennukset. Tätä voisi käyttää esim. rekisteröitymislomakkeen räätälöintiin. Kaikki kentät saa toki helposti renderöityä form() kutsulla, jota voi myös rajoittaa näyttämään vain tietyt kentät.

    Kuitenkin noiden laajennosten poimiminen mahdollistaisi omat kikat ja jotenkin epäilen, että sellainen kyllä on, mutta ”dokumentointi” ontuu.

    Ja kuten sanottua, niin tämähän on tätä avointa lähdekoodia, jota voi kuka vain ja miten vain tehdä, jolloin tulee hyvin kirjavia toteutuksia. Usein myös ratkaisut ovat vähemmän geneerisiä ja helposti melko rajoittuneita (eli MVP).
    Mutta toki sitä sopii aina itsekin opiskella ja opetella lisää 🙂

    Moderator Mikko Saari

    (@msaari)

    Hyvin tehdyt pluginit ovat täynnä filttereitä ja toimintakoukkuja, joilla ne saa vaivattomasti tekemään mitä haluaa. Hyvä esimerkki on vaikkapa TablePress, jota olen käyttänyt niinkin, että käytän siitä backendiä taulukoiden ylläpitämiseen, mutta frontendin puolella TablePressin tuotokset heivataankin roskiin ja tilalle rakennellaan taulukkodatasta jotain ihan muuta. Joustava systeemi venyy tähän.

    Osa on sitten vähän vähemmän joustavia…

    Thread Starter lifespan

    (@lifespan)

    Nämä filtterit on itselle vielä melko tuntematon käsite.

    Osaatko lyhyesti avata/kiteyttää ne?

    Moderator Mikko Saari

    (@msaari)

    Toimintakoukku on yksinkertainen. Jossain on tällainen:

    do_action('tagi');

    johon voi koukuttaa toimintoja näin:

    add_action('tagi', 'funktio', prioriteetti);

    jolloin tuo funktio ajetaan tuossa kohtaa. Jos on useita funktioita samassa koukussa, ne ajetaan prioriteettijärjestyksessä.

    Hyvä esimerkki on vaikkapa toimintakoukku wp_head, joka pitäisi löytyä jokaisesta teemasta <head>-tagin sisältä ja jolla voi lisätä omaa koodia sivujen alkuun ilman että tarvitsee muokata itse sivupohjaa (eli koodit voi lisätä pluginista, jolloin ne pysyvät, vaikka teeman vaihtaisi).

    Filtteri on muuten sama kuin toimintakoukku, mutta sillä voi muokata jotain arvoa.

    apply_filters('tagi', 'arvo', lisäparametrejä...);

    johon tarrataan

    add_filter('tagi', 'funktio', prioriteetti, parametrien lukumäärä);

    Minulla on esimerkiksi Relevanssi-pluginissa tällainen:

    $wp_query = apply_filters('relevanssi_modify_wp_query', $wp_query);

    Jos kehittäjän on tarpeen päästä muokkaamaan $wp_queryä juuri ennen kuin Relevanssi näkee sen, homma hoituu tuolla filtterillä.

    Pre_option-filtterit ovat myös hyvä esimerkki, miten tehokasta tämä voi olla. Jokaisen asetuksen lukemisen yhteydessä ajetaan filtteri pre_option_(asetuksen nimi), jonka avulla asetuksen arvoa voi muuttaa lennossa tilannekohtaisesti.

    Mitä enemmän pluginissa on filtterikutsuja, sitä joustavammin sen toimintaa pystyy säätelemään ulkopuolelta ilman että tarvitsee muokata itse lähdekoodia.

Esillä 5 vastausta, 1 - 5 (kaikkiaan 5)
  • The topic ‘Käyttäjätietojen asettaminen lomakekentän oletusarvoksi’ is closed to new replies.