这可能更适合StackExchange,因此如果您认为这是引导我的问题的正确位置,请让我知道:)。
我有一个属性为的类save_list
. 这是一个二维数组,其值的格式为array(\'meta_key\' => $meta_key)
. 该类实例化一次,如下所示$metabox
在我的functions.php
文件,然后$metabox
变量用于保持对对象的引用。
我的问题是save_post
动作,物体似乎失去了save_list
属性,因为尝试转储它时会显示一个没有值的数组。
class Metabox
{
public function __construct() {
$this->save_list = array();
add_action(\'save_post\', array($this, \'save_postmeta\'));
}
public function text($meta_key, $atts) {
global $post;
$this->save_list[] = array(\'meta_key\' => $meta_key);
$default_atts = array(
\'value\' => false,
\'class\' => \'\'
);
$atts = $atts + $default_atts;
$atts[\'value\'] = (!$atts[\'value\']) ? get_post_meta($post->ID, $meta_key, true) : $atts[\'value\'];
extract($atts);
print_r($this->save_list);
?>
<input name="<?php echo $meta_key; ?>" type="text" class="<?php echo $class; ?>" value="<?php echo $value; ?>">
<?php
}
public function save_postmeta($post_id) {
$save_list = $this->save_list;
foreach ($save_list as $item) {
$meta_key = $item[\'meta_key\'];
update_post_meta($post_id, $meta_key, $_POST[$meta_key]);
}
exit(var_dump($save_list));
}
}
然而print_r($this->save_list)
在text()
方法工作正常,并相应地保持作用域,例如,它的每次调用都会增加save_list
当被那个电话甩了的时候。
我想知道这是否与save_post
行动有效,或者我可能非常累,犯了一个简单的、平凡的错误。
任何帮助都将不胜感激!
(如果您认为这有助于了解背景functions.php
文件)
$metabox = new Metabox;
function add_input_metabox() {
add_meta_box(\'text1\', \'text1\', \'input_metabox_callback\', \'eating\', \'side\');
add_meta_box(\'text2\', \'text2\', \'input_metabox_callback_\', \'eating\', \'side\');
}
add_action(\'add_meta_boxes\', \'add_input_metabox\');
function input_metabox_callback() {
global $metabox;
$metabox->text(\'text3\', array(\'class\' => \'widefat\'));
$metabox->text(\'text4\', array(\'class\' => \'widefat\'));
}
function input_metabox_callback_() {
global $metabox;
$metabox->text(\'text1\', array(\'class\' => \'widefat\'));
$metabox->text(\'text2\', array(\'class\' => \'widefat\'));
}