Cum accesez direct un fișier PHP localizat în folderul temei mele?
Am un fișier în folderul temei mele numit "test.php".
Dacă accesez www.mysite.com/wp-content/themes/my-theme/folder/test.php, tema se încarcă ceea ce presupun că este o eroare 404 gestionată de WordPress. Dacă schimb numele fișierului în test.html, îl pot accesa fără probleme.
Am încercat să adaug următorul cod în fișierul meu functions.php (pentru a adăuga o regulă de rescriere):
add_rewrite_rule( 'test.php$', $relative_directory . '/folder/test.php [L]', 'top' );
dar chiar și având regula htaccess nu părea să facă nimic.
Aveți vreo idee ce ar putea cauza această problemă?

Presupunând că utilizați URL-ul corect pentru a accesa fișierul, totul este gestionat la nivelul serverului web, iar WP nu rulează deloc, astfel încât soluțiile bazate pe WP, cum ar fi modificarea regulilor de rescriere, nu vă vor ajuta.
Cel mai probabil, există o configurație a serverului web care trimite eroarea 404 pentru orice acces la un fișier php din acel folder (ar trebui să încercați dacă și alte fișiere php de acolo returnează 404). S-ar putea să puteți repara configurația serverului web pentru a se potrivi nevoilor dumneavoastră, dar, așa cum a comentat @EAMann, nu este metoda corectă de a scrie ajax pentru WP.

Folosești reguli RewriteRule
în fișierul tău .htaccess? Ar trebui să poți accesa fișierele PHP direct în acest caz. Primele două linii cu un RewriteCond
asigură că rescrierea către index.php
al WordPress nu se întâmplă dacă fișierul sau directorul există.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /your-wp-site/index.php [L]

Trebuie să creezi un șablon personalizat pentru WordPress pentru acel fișier, astfel încât să se poată afișa corect. Altfel, este un fișier independent care încearcă să se execute fără permisiune sau hook-uri necesare. În acest caz, ar trebui să adaugi codul PHP direct prin WordPress și să creezi o Pagină.
De asemenea, poți deschide "page.php" din directorul temei tale selectate, să-l salvezi ca "test.php" în același director și să lipesti întregul conținut al codului PHP din "test.php" în interiorul diviziunii din noul tău fișier "test.php".
Ceva de genul acesta:
<main id="main" class="site-main" role="main">
<?php
//Codul tău PHP aici!
?>
</main>
Aceasta arată doar diviziunea de bază de care ai nevoie. Dacă dorești să afișezi și restul conținutului site-ului împreună cu "test.php", va trebui să creezi un fișier "content-test.php" în directorul "templates-parts" din tema ta.
La fel ca înainte, dar de data aceasta deschizi "content-page.php" și îl salvezi ca "content-test.php" în directorul "templates-parts", apoi lipești codul din "test.php" în interiorul diviziunii unde dorești să apară.
Înapoi în noul fișier "test.php", înlocuiește următoarea linie:
get_template_part( 'template-parts/content', 'page' );
cu:
get_template_part( 'template-parts/content', 'test' );
Dezavantajul acestei metode este că, atunci când WordPress se actualizează, este posibil ca acest fișier să nu rămână intact, spre deosebire de prima opțiune care încarcă fișierul PHP ca post sau pagină.
Sper că te ajută!
