¿Cómo accedo directamente a un archivo PHP ubicado en mi carpeta de temas?
Tengo un archivo en la carpeta de mi tema llamado "test.php".
Si voy a www.mistitio.com/wp-content/themes/mi-tema/carpeta/test.php el tema se carga, lo que asumo es un error 404 manejado por WP. Si cambio el nombre del archivo a test.html puedo acceder sin problemas.
Intenté agregar el siguiente código a mi archivo functions.php (para agregar una regla de reescritura):
add_rewrite_rule( 'test.php$', $relative_directory . '/folder/test.php [L]', 'top' );
pero incluso teniendo la regla en htaccess no pareció hacer nada.
¿Alguna idea de qué podría estar causando esto?

Asumiendo que uses la URL correcta para acceder al archivo, todo se está manejando a nivel del servidor web y WordPress no se ejecuta en absoluto, por lo que soluciones basadas en WP como cambiar reglas de reescritura no te ayudarán.
Es muy probable que exista alguna configuración del servidor web que envía el error 404 por cualquier acceso a un archivo php en esa carpeta (deberías probar si otros archivos php allí también devuelven 404). Podrías intentar ajustar la configuración del servidor web para que se adapte a tus necesidades, pero como comentó @EAMann, esta no es la forma correcta de escribir ajax para WP.

¿Estás usando reglas de RewriteRule
en tu archivo .htaccess? Entonces deberías poder acceder directamente a los archivos PHP. Las primeras dos líneas con un RewriteCond
aseguran que la reescritura hacia el index.php
de WordPress no ocurra si el archivo o directorio existe.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /tu-sitio-wp/index.php [L]

Tienes que crear una plantilla personalizada de WP para que ese archivo se pueda mostrar correctamente. De lo contrario, es un archivo independiente que intenta ejecutarse sin permisos o hooks. En este caso, necesitarías agregar el código PHP del archivo directamente a través de WP y crear una Página.
También puedes abrir el archivo "page.php" en el directorio de tu tema seleccionado, guardarlo como "test.php" en el mismo directorio y pegar todo el contenido de tu código PHP de "test.php" dentro de la división principal de tu nuevo archivo "test.php".
Algo como esto:
<main id="main" class="site-main" role="main">
<?php
//¡Tu código PHP aquí!
?>
</main>
Esto solo muestra la división básica que necesitarás. Si necesitas que se muestre todo el contenido del sitio junto con test.php, deberás crear un archivo content-test.php en el directorio "template-parts" de tu tema.
De nuevo, es lo mismo excepto que esta vez abrirás "content-page.php" y lo guardarás como "content-test.php" en el directorio "template-parts", luego pegarás el código de test.php dentro de la sección donde quieras que aparezca.
Regresa al nuevo "test.php" y reemplaza la siguiente línea:
get_template_part( 'template-parts/content', 'page' );
con:
get_template_part( 'template-parts/content', 'test' );
La desventaja de este método es que cuando WP se actualice, puede o no dejar ese archivo intacto, a diferencia de la primera opción que llama al archivo php como una publicación o página.
¡Espero que esto ayude!
