J'ai créé un shortcode qui génère automatiquement des shortcodes avec une clé et une valeur de tableau données. Les noms de fonction ne génèrent pas de manière dynamique.
Remarque: Tableau KEY = ShortcodeName et Value = Champ Option de Wordpress.
add_shortcode("auto_gen", "auto_gen");
function auto_gen() {
$a = array(
"get_address" => "mg_admin_address",
"get_phone" => "mg_admin_phone",
"get_fax" => "mg_admin_fax",
"get_email" => "mg_admin_email",
"get_hrs_mon" => "mg_work_hrs_mon_frd",
"get_hrs_sat" => "mg_work_hrs_sat"
);
foreach ($a as $k => $v) {
if(has_shortcode($k)) {
echo "<br>Found: ". $k;
} else {
add_shortcode($k, $k. "_init");
function $k. "_init"() {
return get_option[$v, ''];
}
}
add_shortcode();
echo $k ." -> ". $v. "<br />";
}
}
Il n'y a aucun moyen de le faire.
NOTE:
Ici, la clé de tableau get_address est un shortcode. Et il est généré dynamiquement quand il passe en boucle. get_address est modifiable. Si je change get_address avec get_user_address, alors get_user_address est généré. "get_address", "get_phone" sont modifiables au niveau de fin.
Les développeurs génèrent également des codes abrégés pour accéder aux wp_options créées à l'aide de get_options, en insérant simplement des éléments dans un tableau. par exemple. "shortcode_name" => "option_name"
Vous pouvez essayer ce qui suit Shortcode Automat :
/**
* Setup the Shortcode Automat
*
*/
function shortcode_automat_setup()
{
$settings = array(
"get_address" => "mg_admin_address",
"get_phone" => "mg_admin_phone",
"get_fax" => "mg_admin_fax",
"get_email" => "mg_admin_email",
"get_hrs_mon" => "mg_work_hrs_mon_frd",
"get_hrs_sat" => "mg_work_hrs_sat"
);
$sc = new ShortCodeAutomat( $settings );
$sc->generate();
}
add_action( 'wp_loaded', 'shortcode_automat_setup' );
Vous pouvez ensuite le tester depuis votre thème/plugin avec:
echo do_shortcode( "[get_address]" );
echo do_shortcode( "[get_phone]" );
echo do_shortcode( "[get_fax]" );
ou le tester avec:
[get_address]
[get_phone]
[get_fax]
dans votre post/contenu de la page.
Voici notre définition de classe de démonstration:
/**
* class ShortCodeAutomat
*/
class ShortCodeAutomat
{
protected $settings = array();
public function __construct( $settings = array() )
{
$this->settings = $settings;
}
public function __call( $name, $arguments )
{
if( in_array( $name, array_keys( $this->settings ) ) )
{
return get_option( sanitize_key( $this->settings[$name] ), '' );
}
}
public function generate()
{
foreach( $this->settings as $shortcode => $option )
{
add_shortcode( $shortcode, array( $this, $shortcode ) );
}
}
} // end class