Metaboxen in der Schleife

Ich möchte Metaboxen in foreach Schleife erstellen. Die Voraussetzung ist, ich habe ein Array von benutzerdefinierten Post-Typen und ich möchte eine Schleife ausführen, um Metaboxen für die Post-Typen hinzuzufügen, die als Schlüssel in einem Array sind. Bis jetzt habe ich viel von der Anforderung entwickelt, aber jetzt stecke ich in dem Teil fest, in dem Callback-function innerhalb von add_meta_box() aufgerufen werden soll. Ich habe call_user_func_array , um die Callback-function aufzurufen und den $key als Argument zu übergeben, aber es gibt einen Fehler zurück, und es funktioniert nicht. Unten ist mein Code:

 function rttk_create_boxes(){ $myarray = $this->rttk_get_posttype_array(); foreach ($myarray as $key => $value) { // echo "key--".$key; // $arr[] = ''; // $arr[] = $key; $key = (array)$key; add_meta_box( 'rttk_'.end($key).'_id', __( 'Details', 'rara-theme-toolkit-pro' ), //array($this,'rttk_testimonials_metabox_callback',$key), call_user_func_array(array( $this, 'rttk_testimonials_metabox_callback'),$key ), $key, 'side', 'high' ); } } // testimonials template form public function rttk_testimonials_metabox_callback($key){ include RTTKPRO_BASE_PATH.'/includes/meta-parts/rttk-'.$key.'-template.php'; } 

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

Solutions Collecting From Web of "Metaboxen in der Schleife"

Sie verwenden den callback in einem classnkontext, aber ich sehe keine classndeklaration. Vielleicht wurde es weggelassen, aber hier ist eine mögliche Lösung ohne class zu verwenden.

 function rttk_create_boxes() { $myarray = $this->rttk_get_posttype_array(); foreach ( $myarray as $key => $value ) { add_meta_box( 'rttk_' . $key . '_id', __( 'Details', 'rara-theme-toolkit-pro' ), 'rttk_testimonials_metabox_callback', null, 'side', 'high', array( 'key' => $key ) ); } } // testimonials template form function rttk_testimonials_metabox_callback( $post, $args ) { $key = $args['args']['key']; include RTTKPRO_BASE_PATH . '/includes/meta-parts/rttk-' . $key . '-template.php'; }