Предположим, у меня есть функция, которая должна иметь возможность загружать файл в зависимости от атрибута в коротком коде:
[open_file ex1]
Как мне определить, какое имя файла задано как $csv
зависимости от атрибута, указанного в коротком коде?
Этот код ниже не работает, но иллюстрирует то, что я пытаюсь сделать.
function open_file($atts) { if ($atts = "ex1") { $csv = "ex1.csv" } elseif ($atts = "ex2") { $csv = "ex2.csv" } elseif ($atts = "ex3") { $csv = "ex3.csv"
Кажется, что у вас может быть много этих .csv
файлов. Я бы предложил использовать только один атрибут, а затем передать соответствующее имя этому атрибуту или префиксу имени файла, а затем создать там имя файла.
Вы можете попробовать одно из следующих действий ( я не выполнил никаких проверок, вы, вероятно, будете проверять, что атрибут не пуст и что файл существует до того, как он что-то возвращает в коротком коде )
Передача полного имени файла (мой личный выбор)
add_shortcode( 'open_file', 'custom_file' ); function custom_file( $atts ) { $attributes = shortcode_atts( array( 'file' => '', ), $atts ); return $attributes['file']; }
Используйте его, как следует
[open_file file='ex1.csv']
Передача префикса атрибуту
add_shortcode( 'open_file', 'custom_file' ); function custom_file( $atts ) { $attributes = shortcode_atts( array( 'file' => '', ), $atts ); $filename = $attributes['file'] . '.csv'; return $filename; }
Используйте его, как следует
[open_file file='ex1']
Делая это с помощью любого из приведенных выше методов, вы удалите очень длинное и ненужное if/else
выражение