Creating a (global)-mapping

时间:2018-04-18 作者:Zeth

我正在制作页面id和类别id之间的映射,这被用于多个位置。

然而我读到from this post, 如果可以避免的话,永远不要使用全局变量。但我认为,将其作为一个全局变量是明智的,因此它不是一个应该多次执行的函数(并且每次迭代几个ID)。

但我不知道怎么做。我得到的是:

/**
 * Should this be here, in order to make it global?
 */
$page_category_mapping = array();
global $page_category_mapping;


/** 
 * Building the mapping... 
 *
 * Should this tage the $page_category_mapping
 * as input? 
 */ 
function build_page_category_mapping(){
  // Going over all pages and maps them to a category
}
add_action( \'init\', \'build_page_category_mapping\' );


/**
 * I assume this function should take the array as input, right?
 */
function a_funtion_that_uses_the_mapping( $page_category_mapping ){
  echo \'<pre\';
  print_r( $page_category_mapping );
  echo \'</pre\';
}
add_shortcode( \'list_mapping\', \'a_funtion_that_uses_the_mapping\' );

1 个回复
最合适的回答,由SO网友:Zeth 整理而成

我自己想出来的。

function generate_the_excluded_array() {

  global $excluded_pages;
  $excluded_pages = array(\'Foo\', \'Bar\');
}
add_action( \'after_setup_theme\', \'generate_the_excluded_array\' );
然后可以使用global, 因此:

function example_shortcode_definition() {

  global $excluded_pages;
  echo $excluded[0];
}
add_shortcode( \'example_shortcode\', \'example_shortcode_definition\' );

结束