Не использовать функцию php fopen () в wordpress functions.php

Я пытаюсь выполнить простой запуск fopen () в функции.php , а также попробовал его в файле шаблона test.php wordpress.

Но это не работает. Если я перемещу файл test.php и файл csv в место вне папки темы, оно будет работать в первый раз.

function csv_to_array($filename='', $delimiter=',') { if(!file_exists($filename) || !is_readable($filename)) return FALSE; $header = NULL; $data = array(); if (($handle = fopen($filename, 'r')) !== FALSE) { while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { if(!$header) $header = $row; else $data[] = array_combine($header, $row); } fclose($handle); } return $data; } echo '<pre>'; var_dump(csv_to_array('csv/nationality-codes.csv')); echo '</pre>'; 

Это моя структура папок в файле темы …

введите описание изображения здесь

Любые идеи, почему это не работает?

Вам нужно использовать полный путь к файлу, а не относительный.

Используйте функцию WordPress get_template_directory() чтобы получить путь к каталогу шаблонов. Оттуда добавьте путь к вашему файлу.

Изменить:

 var_dump(csv_to_array('csv/nationality-codes.csv')); 

Для того, чтобы:

 var_dump( csv_to_array( get_template_directory() . 'csv/nationality-codes.csv' ) ); 

Наконец, мой код работал с помощью NathanDawnson.

По какой-то причине функции.php не относились к относительному пути. Это было исправление …

 get_template_directory() . '/csv/nationality-codes.csv' 

См. Полный рабочий код.

 // csv to array function csv_to_array($filename='', $delimiter=',') { if(!file_exists($filename) || !is_readable($filename)) return FALSE; $header = NULL; $data = array(); if (($handle = fopen($filename, 'r')) !== FALSE) { while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) { if(!$header) $header = $row; else $data[] = array_combine($header, $row); } fclose($handle); } return $data; } // rider nationality function motocom_rider_nationality( $field ) { // reset choices $field['choices'] = array(); // get the textarea value from options page without any formatting $choices = csv_to_array( get_template_directory() . '/csv/nationality-codes.csv' ); $field['choices'] = array( null => 'Select nationality...' ); // loop through array and add to field 'choices' if( is_array($choices) ) { foreach( $choices as $choice ) { $label = $choice['Country']; $value = $choice['A3']; $field['choices'][ $value ] = $label . ' [' . $value . ']'; } } // Important: return the field return $field; } add_filter('acf/load_field/name=rider_nationality', 'motocom_rider_nationality');