运行脚本绝对比一切都重要

时间:2019-06-25 作者:Ordog

我想在Wordpress出现之前运行一个脚本。

我知道这是错误的,但目前我在index.php 以下代码之前的文件:

{{{MY FUNCTION IS HERE}}}

require \'vendor/autoload.php\';

use GeoIp2\\Database\\Reader;

session_start();

if (!isset($_SESSION[\'country\'])) {
    $reader = new Reader(\'db/GeoLite2-Country.mmdb\');

    $record = $reader->country($_SERVER[\'REMOTE_ADDR\']);

    $_SESSION[\'country\'] =  $record->country->isoCode;
}

{{{MY FUNCTION ENDS HERE}}}


/**
* Front to the WordPress application. This file doesn\'t do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
*/

/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/

define( \'WP_USE_THEMES\', true );

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . \'/wp-blog-header.php\' );
当Wordpress更新时,这显然被掩盖了,所以我如何才能安全正确地包含我的函数呢?

在我的主题中,我尝试了以下内容functions.php 文件:

add_action( \'init\', \'my_script\' );

function my_script() {

      // my script here
}
但这还不够快,除非我犯了个错误?

有人能帮忙吗?

非常感谢

3 个回复
SO网友:ChristopherJones

init 不是在WordPress安装上运行的第一个操作。下面是典型堆栈顺序的基本概述。

https://codex.wordpress.org/Plugin_API/Action_Reference

尝试挂接到“muplugins\\u-loaded”。我不认为它是有条件的,所以它应该每次都运行。

https://codex.wordpress.org/Plugin_API/Action_Reference/muplugins_loaded

<?php
  add_action( \'muplugins_loaded\', \'my_script\' );

  function my_script() {
    // my script here
  }

SO网友:Nathan Johnson

WordPress加载并在更新时不覆盖的第一个PHP文件是wp-config.php. 此时,未加载WordPress。因此,您可以将函数放在该文件的开头。

SO网友:majick

您只需将代码放在任何文件中(使用.php 扩展名为)in/wp-content/mu-plugins/

该目录(但不是子目录)中的所有PHP文件将在任何挂钩被触发之前自动运行(是的,甚至在muplugins_loaded.)

与主题相比,这无疑是一个更好的站点范围自定义的地方functions.php 无论如何,如果你改变主题,它们会一直存在。

相关推荐

static array on functions.php

在函数中。php中,我想访问数据库一次,以获取一个ACF对象,然后在本地“保存”它,以防止对数据库的进一步请求。我想首先在“init”钩子中调用以下函数。然后,假设,当我在以后的挂钩上调用它时,由于使用了“static”关键字,$current\\u store var已经设置好了,函数将在第一个“if”返回已经保存的静态var时停止。它不起作用-当访问稍后挂钩上的函数时,“isset($current\\u store)”返回false。我做错了什么?function get_current_store