Căutați o modalitate de a forța tipul de postare personalizat să fie privat în mod implicit? Deși probabil există un plugin pentru asta, am creat un fragment de cod rapid pe care îl puteți utiliza pentru a forța tipul de postare personalizat să fie privat în WordPress.
Instrucțiuni:
Tot ce trebuie să faceți este să adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:
function force_type_private($post)
{
if ($post['post_type'] == 'my_post_type')
$post['post_status'] = 'private';
return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');
Nu uitați să schimbați my_post_type cu numele tipului dvs. de postare personalizat. Aceasta este o mică modificare față de codul sursă și nu include o parolă, deoarece este privat și nu protejat prin parolă.
Notă: Dacă aceasta este prima dată când adăugați fragmente de cod în WordPress, consultați ghidul nostru despre cum să adăugați corect fragmente de cod în WordPress, pentru a nu vă defecta accidental site-ul.
Dacă ți-a plăcut acest fragment de cod, te rugăm să iei în considerare și alte articole de pe site, cum ar fi: cele mai bune 28 de teme WordPress pentru CV și cum să creezi un formular de candidatură în WordPress.
Bună,
Aveți vreo idee cum să fac același cod, dar pentru 2 CPT diferite în loc de una singură?
Mulțumesc anticipat
știu că acest fir de discuție este puțin vechi, dar... cum poți viza un câmp personalizat în acel tip de postare personalizată pentru a-i schimba valoarea?
L-am editat, așa că linkurile sunt setate la numele postării în loc de "my_post_type/auto-draft" atunci când sunt create. Astfel, puteți posta și postări protejate prin parolă.
function force_type_private($post) { if ($post[‘post_type’] == ‘my_post_type’) { if ($post[‘post_status’] == ‘publish’) $post[‘post_status’] = ‘private’; } return $post; } add_filter(‘wp_insert_post_data’, ‘force_type_private’);
Acest lucru funcționează, dar am constatat că face ca postarea să fie imposibil de mutat la coșul de gunoi... ați experimentat și dvs. acest lucru?
Nu, nu am avut această problemă, dar o voi încerca și voi vedea dacă pot reproduce problema.
Da, am exact aceeași problemă... Cineva are vreo idee?
De ce nu faci pur și simplu: if ( tip postare = tipul meu de postare) { stare postare = privat; return post; }
Se pare că ai o linie suplimentară inutilă.
Adevărat, Adam, am corectat.
este acest cod corect?
Cred că ai uitat un „ELSE”
Salut Jose,
Nu, este corect, creează doar un nou tip de postare personalizat, apoi adaugă acest lucru la functions.php și vei observa că atunci când selectezi adăugare nouă pentru acel tip de postare personalizat, va fi implicit selectat privat.
Salut Kevin,
Tot nu există nicio modalitate de a-mi șterge postările cu acest cod. Aveți vreo idee?
Cu stimă,
Am folosit un cod de genul acesta, care verifică dacă sunt în coșul de gunoi înainte de a le face private:
// Forțează postările de tip personalizat „internt-arkiv” să fie private
//…dar mai întâi asigură-te că nu sunt „trash” altfel este imposibil să arunci o postare
function force_type_private($post)
{
if ($post[‘post_type’] == ‘my_post_type’) {
if ($post[‘post_status’] != ‘trash’) $post[‘post_status’] = ‘private’;
}
return $post;
}
add_filter(‘wp_insert_post_data’, ‘force_type_private’);
[…] Acest post a fost menționat pe Twitter de HTMLfrp, wp_freak. wp_freak a spus: #wordpress Forțează tipul de postare personalizat să fie privat http://bit.ly/fHzJuW […]