自定义php页面超出了我的主题范围

时间:2020-08-08 作者:Simon

场景

我正在一个域的网站上工作,该网站是多站点安装的一部分。

我期待着创建一个自定义php页面,将做一些处理。可以使用Javascript从WP主站点访问此页面XMLHttpRequest

我不希望此页面包含任何主题的标题、内容等,因为用户的浏览器实际上不会直接访问此页面。

Example php (simplified);

<?php session_start() $_SESSION["stuff"] = "things"; echo "success"; exit(); ?>

我尝试过的事情

我尝试在“元素”中为PHP使用钩子和标题,但似乎所有可用选项都只在开始生成一些标题后处理PHP,因此这意味着PHP无法像预期的那样准确地显示数据。

对我来说,简单地创建一个\',似乎是显而易见的。如果不使用WP,我也会以同样的方式创建php’文件,但是我一直在努力找到应该创建这样一个文件的目录。我检查了文件的配置:/etc/apache2/sites enabled/000 default。confbut这只是显示了“DocumentRoot/var/www/wordpress”,它是多站点区域的根目录。这让我相信,这可能比直接在服务器上的某个目录中创建文件要复杂一些。

我还尝试在“编辑页面”中使用此页面的“禁用元素”,但这似乎也不够。

我也试着回顾一下previous thread 但我看不到解决方案,理想情况下,我根本不想在这个页面上使用WP功能。我只想从https://example.com/string.php (或类似)。

我希望页面尽可能简单,或者能够尽早执行php,以便exit(); 阻止将实际页面呈现为HTML(标题等)

此外,如果有其他(但不是荒谬的)方法,我理想情况下也不想仅仅“抛出另一个插件”。

你能帮我找到一个解决办法吗?

非常感谢!

2 个回复
SO网友:Ben

这不是你可以放进你的functions.php 文件作为新函数,将操作添加到init 在页面加载时启动?然后可以放入if语句,使其仅在满足特定条件时运行,例如加载了页面ID或slug或模板?

如果这确实需要一个空白页,那么您可以在主题根目录中创建一个文件,名为page-processor.php 您可以在其中输入所需的数据。只要不包含,此页面将加载为空白get_header()get_footer(). 创建文件并为模板命名后(查看here 如果您不熟悉某些页面模板信息),则可以在“属性”选项卡中将该空白模板设置为页面模板。

SO网友:mozboz

实现这一目标的两种方法:

1-创建一个新的REST API端点Wordpress提供了一些很好的函数,这些函数使得ajax风格的可调用URL可以封装一些小的功能,就像您想要的那样。

function myapi_dosomething() {
    // Do whatever you want here, set cookies, db operations, etc.
    // Use the Wordpress functionality wherever possible
    return "hello";
}

add_action( \'rest_api_init\', function () {
  register_rest_route( \'myrestapi/v1\', \'/dosomething\', array(
    \'methods\' => \'GET\',
    \'callback\' => \'myapi_dosomething\',
  ) );
} );
现在将在URL处提供用JSON整齐包装的输出“hello”www.example.com/wp-json/myrestapi/v1/dosomething

2-将文件托管在插件中

您可以使用插件基础结构将PHP文件托管在wp内容/插件目录中。这是一个很好的实现方法,因为它使您的代码整齐地封装在插件基础设施中,这意味着它很容易在任何Wordpress情况下安装,Wordpress系统和主题升级不会影响它。

只需很少的编码就可以做到这一点,您只需要一个带有正确标题的简单假插件文件。

3-将文件托管在Wordpress Web空间之外

如果您将Wordpress文件移动到托管根目录中的子目录,那么您可以将任何其他PHP文件或任何其他内容粘贴到托管根目录中(或者为您托管的其他应用程序或PHP文件创建一个新目录)。如果你的网站已经在运行,这是不理想的,需要一点混乱。htaccess文件以使您的Wordpressappear 在根目录中运行。如果您对服务器没有太多的控制权,并且需要在同一个Web空间中托管许多单独的PHP应用程序,那么这将非常有用。

正如你可能已经确定的,把一个。Wordpress文件空间中的php文件无法工作,或者可能会让Wordpress感到困惑,并且与

相关推荐

将自定义代码移出主题的函数.php文件

我已经编写了在单个页面上使用的代码,但我已经将其放置在主题函数中。php创建了一个javascript文件,并将其放置在主题的JS目录中。最近,更新了主题和功能。php被覆盖,JS文件消失。我需要把这些代码放在哪里,这样当主题更新时,我的代码就不会丢失?功能。php: add_action(\'wp_ajax_zip_search\', \'zip_search\'); add_action(\'wp_ajax_nopriv_zip_search\', \'zip_search\' );&