J'essaie de passer une variable à la fonction de rappel via add_meta_box. Sachant qu'il existe $ callback_args qui peut être utilisé pour transmettre la variable. Mais d'une manière ou d'une autre, je n'arrive pas à le faire fonctionner au sein d'une classe. Ce sont mes codes
class myclass{
//.....blah blah....adding action
function add_ex_field() {
add_meta_box( 'apextadmin', __( 'My Custom Field', 'myplugin_textdomain' ),array($this,'the_callback_function'),post,array('test'=> $param));}//the $param is some value that saved in my option table.
}
function the_callback_function($post, $metabox){//do I need to include these two parameters? because they gave me error!
echo '<h1>testing field</h1>';
echo $metabox['args']['test'];
}
}
global $myclas;
$myclas = new myclas();
Merci.
Parfois, un exemple en dit plus que mille mots. Voici un petit plugin qui vous guidera:
<?php
! defined( 'ABSPATH' ) AND exit;
/**
* Plugin Name: (#65981) »kaiser« Meta Box example
* Plugin URI: http://goo.gl/ls6Q6
* Description: Example showing how to add a meta box with callback args
* Author: Franz Josef Kaiser
* Author URI: http://unserkaiser.com
*/
if ( ! class_exists( 'WPSE65981_MetaBox_Example' ) )
{
add_action( 'load-post.php', array( 'WPSE65981_MetaBox_Example', 'init' ) );
add_action( 'load-post-new.php', array( 'WPSE65981_MetaBox_Example', 'init' ) );
/**
* The Class
*/
class WPSE65981_MetaBox_Example
{
protected static $instance;
public static function init()
{
null === self :: $instance AND self :: $instance = new self;
return self :: $instance;
}
public function __construct()
{
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
}
/**
* Adds the meta box container
*
* @return void
*/
public function add_meta_box()
{
add_meta_box(
// ID
'wpse65981_meta_box_example'
// Title/"hndle"-bar
,__( 'WPSE Meta Box Headline', 'example_textdomain' )
// Callback
,array( $this, 'render_meta_box_content' )
// post_type
,'post'
// context
,'advanced'
// priority
,'high'
// callback_args
,array( 'Hello', "{$GLOBALS['current_user']->display_name}!" )
);
}
/**
* Render Meta Box content (Callback)
*
* @return void
*/
public function render_meta_box_content( $post, $callback_args )
{
// Argument dump: Uncomment for insights
# var_dump( $post );
# var_dump( $callback_args );
$args = array_map( 'esc_html', $callback_args['args'] );
return print "<h2>".implode( ' ', $args )."</h2>";
}
} // END Class WPSE65981_MetaBox_Example
} // endif;
Si vous vous demandez comment j'ai identifié les points d'ancrage utilisés pour le chargement de la fonction statique init
, alors jetez un coup d'œil à mon plug-in "actual admin info" ici .
La façon la plus simple de le faire est de ne retenir que les arguments transmis sur un sous-ensemble du tableau d'origine. Lorsque vous utilisez une structure de classe, la méthodologie de base non-classe fonctionne toujours.
Donc, passer un argument dans l'appel add_meta_box, serait comme ceci:
$args = array('Index'=>'1');
add_meta_box( 'mmd_listings_List_Group1',
__( 'Title of Meta Box' ),
'MyCallBack',
'custom post name',
'normal',
'high',
$args <========== array with arguments
);
function MyCallBack($post_ID, $Arg)
{
$Index = $Arg['args']['Index']; <=========== your argument in the function
}
Découvrez-le sur: https://developer.wordpress.org/reference/functions/add_meta_box/