WordPress分开的php文件

时间:2017-09-21 13:29:57

标签: php wordpress

我在管理员面板中创建了一个新页面。 在此页面上,例如函数is_admin()可以正常工作。

if ( ! is_admin() ) {
     echo "You are viewing the theme";
} else {
     echo "You are viewing the WordPress Administration Panels";
}

在此页面中,我将发布数据发送到xxx.php文件。 和!在这个xxx.php文件中,诸如is_admin之类的函数不起作用。 我怎样才能让wordpress理解,这个xxx.php文件是他的一部分?所以我可以使用此页面上的功能? 我在用 "include wp-load.php" 但它对我没有帮助。

4 个答案:

答案 0 :(得分:0)

您可以将他添加到主题文件夹&包含在functions.php中:

// functions.php of your current theme
    include __DIR__.'/custom.php';

答案 1 :(得分:0)

我刚刚检查了Github上的源代码。

function is_admin()出现在此文件https://github.com/WordPress/WordPress/blob/6fda2e67b0fe3872cbf5f82b58b98f2a4c96d8f8/wp-includes/load.php#L710-L717

所以,require_once 'wp-includes/load.php;应该把你排除在外。

答案 2 :(得分:0)

你将POST数据(请求,我假设)发送到另一个php文件的事实让我觉得它是一个完全不同的HTTP请求,因此你将无法在目标php文件中使用wp函数,除非您在该文件中包含wp-load.ph

请参阅:https://wordpress.stackexchange.com/questions/69184/how-to-load-wordpress-on-non-wp-page

答案 3 :(得分:0)

add_action('admin_menu', function(){
  add_menu_page( 'Subscribe', 'Subscribe', 'manage_options', 'subsc-options', 'sub_setting', '', 4 ); 
} );


add_action( 'current_screen', function( $current_screen ){  // hook is admin panel only

  if ( stripos($current_screen->base, 'subsc-options')==true  ) {
      include __DIR__.'/custom.php';

  }

});



<form method="post">
  <input type="hidden" name="my_save_settings" >
  ..............

</form>

/*********  CUSTOM.PHP **************/

if ( isset($_POST['my_save_settings']) ) {
  // save form fields
}