
📝 WP-Recall: privaatsete postituste avaldamise seadistamine kasutajate poolt
Kasutajad täitsid oma isiklikus kontos vormi, klõpsasid „Saada" ja taotlus sattus saidi avalikku voogu. Koos telefoninumbri, aadressi ja passiandmetega.
See juhtub, kui kohandatud postitüüp on seadistatud avalikuks. WordPress kuvab vaikimisi kõike, mis on loodud parameetriga 'public' => true, olenemata sellest, kas selle avaldas administraator või külastaja läbi esikülje vormi WP-Recall kaudu.
Allpool on samm-sammuline juhend: loome kohandatud postitüübi, määrame sellele avaldamisel privaatse staatuse ja seadistame ümbersuunamise tagasi kasutajakontole. Ilma kallite kõik-ühes pluginateta: WP-Recall, MB Custom Post Type ja kolm funktsiooni failis functions.php.
💡 Kiire ülevaade:
- Paigalda WP-Recall ja MB Custom Post Type, kaks tasuta pluginat WordPressi.org kataloogist.
- Loo kohandatud postitüüp MB Custom Post Type liidese kaudu, ilma ühegi koodireata.
- Lisa faili
functions.phpkolm funktsiooni: CPT registreerimine koodiga (valikuline), ümbersuunamine pärast avaldamist ja automaatne üleminekprivatestaatusele. - Kontrolli: kasutaja avaldab taotluse oma isiklikust kontost, see on nähtav ainult administraatoritele ja toimetajatele.
Samm 1: Paigalda WP-Recall ja MB Custom Post Type
Sul on vaja kahte pluginat. Mõlemad on tasuta ja saadaval ametlikus WordPress.org kataloogis.
WP-Recall loob kasutaja isikliku konto: registreerimine, profiil, privaatsõnumid ja, mis on meie ülesande jaoks oluline, postituste avaldamine esiküljelt. Kasutaja logib oma kontole sisse, täidab vormi ja saadab taotluse. Ei mingit administraatori paneeli, kõik toimub saidi lehtedel.
MB Custom Post Types & Custom Taxonomies, Meta Boxi plugina laiendus. Pakub visuaalset liidest kohandatud postitüüpide ja taksonoomiate loomiseks. Kirjutamise hetkel on pluginil WordPress.org-is 10 000+ aktiivset paigaldust ja hinnang 4,7. Seda uuendatakse regulaarselt, viimane versioon anti välja juunis 2026.
Mõlemad pluginad paigaldatakse standardsel viisil: Pluginad → Lisa uus, otsi nime järgi, „Paigalda" → „Aktiveeri".
Samm 2: Loo kohandatud postitüüp MB Custom Post Type liidese kaudu
Pärast plugina aktiveerimist ilmub administraatori paneelisse menüü Meta Box → Postitüübid. Klõpsa „Lisa uus" ja täida väljad:

Peamised seaded, mida tasub kohe seadistada:
- Postitüübi ID, süsteeminimi ladina tähtedega, näiteks
claimvõiuser_request. See slug ilmub URL-ides ja koodis. - Sildid, plugin täidab eestikeelsed sildid automaatselt, kui sisestad nime eesti keeles väljale Ainsuse nimi. Muuda käsitsi seda, mis sulle ei sobi.
- Toed, märgi linnukesega
title,editorjacustom-fields. Pisipilti ja kommentaare pole taotluste puhul tavaliselt vaja. - Välista otsingust, luba. Kasutajate postitusi ei tohiks indekseerida.
- Avalik,
true(WP-Recalli vorm peab postitüüpi nägema). Privaatsust käsitleme koodiga 4. sammus.
Klõpsa „Salvesta", kohandatud postitüüp on registreeritud. Sama tulemuse saab saavutada koodiga (alternatiiv neile, kes eelistavad functions.php):
1 function sdstudio_register_private_cpt() { 2 $args = array( 3 'label' => 'Applications', 4 'public' => true, 5 'exclude_from_search' => true, 6 'publicly_queryable' => true, 7 'show_ui' => true, 8 'show_in_rest' => false, 9 'menu_icon' => 'dashicons-lock', 10 'capability_type' => 'post', 11 'hierarchical' => false, 12 'has_archive' => false, 13 'supports' => array( 'title', 'editor', 'author', 'custom-fields' ), 14 'rewrite' => array( 'slug' => 'claims' ), 15 ); 16 17 register_post_type( 'user_claim', $args ); 18 } 19 add_action( 'init', 'sdstudio_register_private_cpt' );
Lisa see kood oma alamteema faili functions.php või Code Snippets plugina kaudu. Pärast salvestamist mine administraatori paneeli, külgribale ilmub jaotis „Taotlused".
Samm 3: Seadista ümbersuunamine pärast avaldamist
Vaikimisi näitab WP-Recall kasutajale pärast esitamist postitust ennast. Taotluste puhul on see mõttetu, inimene vajab oma isiklikku kontot, mitte lehte vormiga, mille ta just esitas.
Allolev funktsioon püüab kinni update_post_rcl konksu (WP-Recalli sündmus pärast avaldamist) ja suunab kasutaja tagasi tema taotluste jaotisesse:
1 /** 2 * Redirect to personal account after publishing a post via WP-Recall. 3 * Add to functions.php of the child theme. 4 */ 5 function sdstudio_redirect_after_rcl_publish() { 6 $user_id = get_current_user_id(); 7 wp_redirect( '/account/?user=' . $user_id . '&tab=publics' ); 8 exit; 9 } 10 add_action( 'update_post_rcl', 'sdstudio_redirect_after_rcl_publish' );
Siin kutsutakse get_current_user_id() välja funktsiooni sees, erinevalt levinud mustrist muutujaga väljaspool, on see usaldusväärne sõltumata faili laadimise järjekorrast. Asenda /account/ tee oma isikliku konto URL-iga oma WP-Recalli paigalduses.
Kontrolli: logi sisse testkasutajana, avalda postitus kontost, brauser peaks naasma taotluste nimekirjaga lehele.
Samm 4: Muuda postitus automaatselt privaatseks
See on võtmesamm. Isegi kui kohandatud postitüüp on otsingu eest peidetud, on postitus ise staatusega post_status = 'publish' otseviite kaudu juurdepääsetav. Ja selle viite leidmiseks on piisavalt viise: alates RSS-voogudest kuni wp-json REST API-ni.
transition_post_status konks käivitub igal postituse staatuse muutusel. Püüame kinni hetke, mil staatus muutub publish-iks ja määrame selle sunniviisiliselt private-iks:
1 /** 2 * Automatically makes a post private upon publication. 3 * Checks that it is our custom post type — user_claim. 4 * Source: https://stackoverflow.com/questions/54508808/ 5 */ 6 function sdstudio_force_private_status( $new_status, $old_status, $post ) { 7 if ( 'user_claim' === $post->post_type 8 && 'publish' === $new_status 9 && $old_status !== $new_status ) { 10 $post->post_status = 'private'; 11 wp_update_post( $post ); 12 } 13 } 14 add_action( 'transition_post_status', 'sdstudio_force_private_status', 10, 3 );

Mis siin rida-realt toimub:
transition_post_status, WordPressi konks, mida kutsutakse välja igal postituse üleminekul ühest staatusest teise.- Esimene tingimus kontrollib
post_type, et vältida tavaliste postituste ja lehtede mõjutamist. - Teine tingimus püüab kinni avaldamise hetke (
publish), mitte avaldamise tühistamist. - Kolmas tingimus (
$old_status !== $new_status) hoiab ära korduva käivitumise, kuiwp_update_postise seda sama konksu kutsub.
Asenda kindlasti 'user_claim' oma kohandatud postitüübi ID-ga. Kui sa pole ID-s kindel, kontrolli seda aadressiribalt, kui redigeerid postitüüpi menüüs Meta Box → Postitüübid.
Ülaltoodud video on üksikasjalik läbikäik kohandatud postitüüpide loomisest WordPressis: teooriast töötava koodini ekraanil. Kui eelistad visuaalset formaati, näitab autor iga sammu koos register_post_type() argumentide selgitusega.
⁉️🤔 Korduma kippuvad küsimused
Milleks üldse privaatne staatus, kui postitus on otsingust välistatud?
Otsingust välistamine (
exclude_from_search) eemaldab postituse ainultWP_Querytulemustest esiküljel. Otsesed URL-id, REST API ja RSS-vood teenindavad sisu endiselt.privatestaatus sulgeb juurdepääsu WordPressi tuuma tasemel, postitus on nähtav ainult kasutajatele, kellel onread_private_postsvõimekus (administraatorid ja toimetajad).
Kas kasutaja saab pärast avaldamist postituse staatust muuta?
Tavalise WP-Recalli liidese kaudu mitte. Esikülje vorm ei paku juurdepääsu staatuse valikule. Aga kui kasutaja saab kuidagi juurdepääsu administraatori paneelile (Autori roll ja kõrgem), saab ta oma postitusi redigeerida. Seega, saitidel, mis võtavad vastu taotlusi, ära anna kasutajatele kõrgemat rolli kui Tellija.
Mida teha, kui WP-Recall ei näe minu kohandatud postitüüpi?
Kontrolli kahte parameetrit postitüübi seadetes:
publicpeaks olematruejashow_uisamutitrue. Seejärel mine WP-Recalli seaded → „Avaldamine" ja veendu, et sinu postitüüp on lubatud tüüpide nimekirjas märgitud. Pärast seadete muutmist tühjenda püsilinkide vahemälu: Seaded → Püsilingid → Salvesta muudatused.
Kas on kohustuslik kasutada just MB Custom Post Type'i?
Ei. Iga kohandatud postitüübi registreerimise meetod töötab: kood failis
functions.php(nagu 2. sammus), Custom Post Type UI plugin või ACF. MB Custom Post Type valiti visuaalse liidese ja nullkulu kombinatsiooni tõttu. Kui sa juba kasutad ACF Pro'd, loo postitüübid selles, loogika ei muutu.
Kood töötab, aga vanad postitused jäid avalikuks, kuidas neid peita?
- sammu funktsioon käivitub ainult avaldamise sündmusel. Olemasolevaid postitusi tuleb töödelda eraldi. Kõige ohutum viis on minna administraatori paneeli, valida kõik vajaliku tüübi postitused ja muuta Kiirredigeerimise kaudu staatus Privaatseks. Sadade postituste puhul kasuta WP-CLI-d:
wp post list --post_type=user_claim --format=ids | xargs -I {} wp post update {} --post_status=private. Enne hulgivärskendust tee andmebaasist varukoopia.
See lähenemine töötab kümnetel saitidel: kasutajad esitavad taotlusi oma isikliku konto kaudu ja administraatorid näevad neid administraatori paneelis. Tüüpilise „WP-Recall + privaatsed postitused" seadistuse jaoks pole midagi muud vaja.
Kui kavatsed kohandatud postitüübi kaudu vastu võtta makseandmeid või passiskaneeringuid, seadista lisaks SSL ja välja krüpteerimine. Aga see on juba eraldi artikli teema.
Mida me saime: käivitamise kontrollnimekiri
- WP-Recall ja MB Custom Post Type on paigaldatud ja aktiveeritud.
- Kohandatud postitüüp on loodud, kas plugina liidese või koodiga.
- WP-Recalli seaded → „Avaldamine", vajalik postitüüp on märgitud.
- 3. sammu ümbersuunamise funktsioon on lisatud faili
functions.php. - 4. sammu privaatse staatuse funktsioon on lisatud,
post_typeon asendatud sinu omaga. - Püsilingid on tühjendatud: Seaded → Püsilingid → Salvesta muudatused.
- Testkasutaja esitas taotluse oma isiklikust kontost, ümbersuunamine töötab, postitus on privaatne.
Üks testtaotluse läbimängimine säästab tunni jagu silumist „miks see ei tööta" toodangus. Ära jäta seda sammu vahele.
Alusta MB Custom Post Type'i paigaldamisest, visuaalne ehitaja säästab sind register_post_type() argumentidega jändamisest. Ja kui sa juba kasutad mõnda teist postitüüpide ehitajat (ACF, CPT UI), võta lihtsalt funktsioonid 3. ja 4. sammust: ümbersuunamine ja privaatne staatus töötavad sõltumatult CPT registreerimise meetodist.
Ja millist meetodit sina kasutad oma WordPressi saitidel kasutajatelt taotluste vastuvõtmiseks? Jaga kommentaarides, on huvitav lähenemisi võrrelda.



