У меня есть функция в файле functions.php, который определяет определенные переменные:
add_action( 'the_post', 'paginate_slide' ); function paginate_slide( $post ) { global $pages, $multipage, $numpages; if( is_single() && get_post_type() == 'post' ) { $multipage = 1; $id = get_the_ID(); $custom = array(); $pages = array(); $i = 1; foreach( get_post_custom_keys() as $key ) if ( false !== strpos( $key, 'slide' ) ) $custom[$key] = get_post_meta( $id, $key, true); while( isset( $custom["slide{$i}-title"] ) ) { $page = ''; $tzTitle = $custom["slide{$i}-title"]; $tzImage = $custom["slide{$i}-image"]; $tzDesc = $custom["slide{$i}-desc"]; $tzEmbed = $custom["slide{$i}-embed"]; $page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />"; $pages[] = $page; $i++; } $numpages = count( $pages ); } }
Я хотел бы вывести некоторые из этих переменных в файле template.php следующим образом: <?php echo $tzDesc; ?>
<?php echo $tzDesc; ?>
но я не могу заставить его работать. Из того, что я понимаю о области переменных , чтобы вызвать эти переменные в другом месте, мне нужно определить их в глобальной области действия и назвать их глобальными в этой функции, как я сделал $pages, $multipage, $numpages;
, Это должно позволить мне подключать эти переменные туда, где они мне нужны. Проблема в том, что, когда я вынимаю их из функции и определяю их выше в глобальной области, вся функция перестает работать.
Как мне нужно структурировать это, чтобы я мог вызвать <?php echo $tzDesc; ?>
<?php echo $tzDesc; ?>
где-нибудь на сайте и есть ли эхо определенная информация?
Я не знаю, имеет ли это значение, но это на сайте WordPress.
Если вы хотите использовать <?php echo $tzDesc; ?>
<?php echo $tzDesc; ?>
любом случае вам нужно будет определить $tzDesc
как глобальную переменную. Однако я не рекомендую это делать, поскольку глобальные переменные считаются плохой практикой программирования.
Лучшим решением будет иметь paginate_slide()
добавить $tzDesc
(и другие значения) к объекту $post
. Таким образом, вы получаете доступ к этим переменным при вызове the_post()
. Если вы идете по этому маршруту, обязательно укажите пробелы в переменных:
$post->ns_tzDesc = $tzDesc;