Вы можете просто попробовать использовать следующее в любой перехваченной функции с динамической переменной $order_id
:
// Get the WC_Email_New_Order object
$email_new_order = WC()->mailer()->get_emails()['WC_Email_New_Order'];
// Sending the new Order email notification for an $order_id (order ID)
$email_new_order->trigger( $order_id );
Это обычно вызывает уведомление о новом заказе Woocommerce для текущего идентификатора заказа.
Если вы включаете другой файл, то рабочий каталог остается там, где находится включаемый файл.
Ваши примеры работают, как и предполагалось.
Правка: Второй пример работает, потому что . (фактическая директория) находится в пути включения (см. ваше сообщение об ошибке).
Правка 2:. Во втором примере ключевым моментом, который Вас заинтересовал, является следующая строка:
<?php require_once("f2.php"); ?>
Сначала она будет искать в текущей рабочей глобусе (/var/www/req_path_test
), но не найдет f2.php.
В качестве запаздывания, она попытается найти f2. php в вашем include_path ('.:/usr/share/php:/usr/share/pear'
), начиная с "." (что относится к файлу actual, а не к файлу , включая ).
Таким образом, "./f2.php" работает и требование не терпит неудачу.
.Когда вы открываете index.php, рабочий каталог устанавливается в папку, в которой находится этот файл. А внутри включенного f1.php этот рабочий каталог не изменяется.
Вы можете включать файлы, используя их абсолютные пути относительно текущего включенного файла, например:
require_once(dirname(__FILE__).'/../../test/file.php')
Но лучше рассмотреть возможность использования автозагрузчика, если эти файлы содержат классы.
Normaly in you old structure
php require_once("f2/f2.php"); ?>
должна работать. Насколько я знаю, php берет пути из исходного скрипта
.Похоже, что на вашем сервере включена настройка open_basedir в конфигурации PHP. Это делает невозможным включение (и открытие) файлов в папках выше Вашего в структуре каталога (т.е. Вы не можете использовать ../ для поднятия в структуре папок).
.