Dacă aveți un site cu mai multi utilizatori, fie ei administratori, editori sau autori știți deja că oricare dintre ei are acces la imaginile și fișierele din Media Library, adică la biblioteca media.
În cazul în care doriți să restricționați accesul la aceste fișiere și imagini, de exemplu astfel încât doar administratorii și editorii să le poate vedea și insera, atunci trebuie să adăugați următorul cod în funcțions.php:
// Limitează accesul la biblioteca media
function wpb_show_current_user_attachments( $query ) {
$user_id = get_current_user_id();
if ( $user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts
') ) {
$query['author'] = $user_id;
}
return $query;
}
add_filter( 'ajax_query_attachments_args', 'wpb_show_current_user_attachments' );
(metoda este luată de pe wpbeginner.com)
Acest cod folosește metoda current_user_can pentru a verifica dacă utilizatorul are capacitatea de a activa pluginuri sau de a edita postările altor utilizatori. Dacă nu, atunci se modifică interogarea utilizată pentru afișarea fișierelor media și o limitează la ID-ul utilizatorului.
Ca imagine generală căutările în WordPress nu sunt grozave, iar afișarea chiar rea:
Caută toți termenii în titlurile postărilor.
Caută orice termen din șirul de căutare în titlurile postărilor.
Potriviri complete ale șirului de căutare în conținutul postării.
Orice termen în conținutul postărilor
Rezultatul este afișat în ordinea descrescătoare a datei publicării postărilor.
Cum subiectul tutorialului nu este optimizarea căutărilor în WordPress voi mai insista doar un pic, cu un exemplu: dacă termnii căutați sunt într-un articol mai vechi, deși este poate mai relevant, el se va găsi spre coada căutărilor, conform cu vechimea lui. Asta pentru că WordPress nu are un sistem complex, nu filtreză după „cele mai citite”, „cele mai apreciate” sau „cele mai relevante, asta ca să dau doar câteva exemple. Așa că pentru o căutare mai eficientă fie folosiți Google, fie pluginuri.
Cum poți limita sau extinde căutarea în WordPress?
Revenind, căutarea WordPress se face în articole și pagini. Dacă dorim să adăugăm și alte taxonomii putem proceda în felul următor:
function wp_search_filter( $query ) {
if ( $query->is_search ) {
$query->set( 'post_type', array('post','page') );
}
return $query;
}
add_filter('pre_get_posts','wp_search_filter');
Avem o matrice cu elementele în care să se facă căutarea:
WordPress oferă mai multe metod condiționale e ce vă permit să identificați locul în care sunteți. Prima pagină, articol, pagină sau arhivă. Cele două is_home() și is_front_page() par la fel și în unele situații chiar sunt identice. Totuși sunt și diferențe, importante.
Când utilizezi id_home() și când is_front_page()?
Așadar: is_front_page () returnează true dacă utilizatorul se află pe pagina sau pagina de articole, care este setată pe prima pagină din Setări -> Afișare.
Setarea primei pagini
Deci, dacă setați pagina „Prima pagină” sau oricare alta ca primă pagină, atunci condiționalul is_front_page() va fi cel potrivit. El va returna true, dacă sunteți pe pagina respectivă sau pe pagina selectată la „Pagină articole”.
Celălalt condițional e util să vă identifice pagina setată la „Pagină articole”. Pe acestă pagină is_home() va returna true în timp ce is_front_page() va returna false.
Pe de altă parte, dacă setările din afișare a paginii dvs. de pornire sunt lăsate în mod implicit (fișierul index .php sau home.php), atunci pagina de pornire va returna true atât pentru is_front_page(), cât și pentru is_home().
Înțelegeți acum diferența dintre cele două?
Un exemplu de utilizare is_home(): ați setat pagina de postări la o pagină numită Știri. Când un utilizator ajunge acolo doriți ca în antet să afișați un meniu suplimentar. Puteți utiliza is_home() pentru a face acest lucru.
Am găsit că în unele situații cele două metode condiționale nu oferă acuarețea așteptată. (unii dezvoltatori spun că problema apare mai ales în siteurile multisites). Soluția de mai jos nu-mi aparține. Ea folosește matricea de sistem $_SERVER astfel:
if ($ _ SERVER ['REQUEST_URI'] == '/') {
// trebuie să fii pe pagina principală
}
Atenție, metoda nu nu va funcționa pentru instanțele WP instalate în subdirectoarele rădăcinii web. Testați înainte de a pune în producție.
Comentarii recente