Как хранить функции в … functions.php?

Я хочу делать некоторые (иногда очень сложные) вещи на своих страницах на основе идентификаторов страниц / сообщений, настроек API и т. Д.

Теперь у меня есть все мои функции, написанные непосредственно в файле page.php, но я не хочу, чтобы он оставил его таким образом – это действительно грязно, и контролировать все сложно. Я хотел бы иметь отдельные файлы для каждой функции и загружать их оттуда. Но есть огромная проблема:

functions.php

function test() { return $post->ID; //or echo $post->ID; } 

page.php

 <?php test(); ?> 

Конечно, test () ничего не возвращает.

Есть ли способ преодолеть это, или мой подход еще глуп? Если да – как я должен хранить свои функции вне основных файлов тем?

Solutions Collecting From Web of "Как хранить функции в … functions.php?"

Глобалы не передаются в функции. Вы должны их объявить.

Измените это:

 function test() { return $post->ID; //or echo $post->ID; } 

…к этому:

 function test() { global $post; return $post->ID; //or echo $post->ID; } 

несколько вещей.

во-первых, как заявил Чип, глобалы должны быть объявлены с закрытой сферой функции.

во-вторых, я подозреваю, что ваш код Page.php не будет «печатать», потому что функция возвращает значение, но не выполняет его.

в-третьих, при разработке ваших страниц и функций вам нужно иметь в виду, какие переменные будут меняться в зависимости от обстоятельств. возможно, было бы нецелесообразно зависеть от глобальных переменных WP. вместо этого передайте переменные в качестве параметров в ваших функциях. если он будет тщательно спланирован, он будет более надежным и позволит вам делать больше с теми же функциями.

веселит,
Грегори