web-dev-qa-db-fra.com

Générer automatiquement des codes courts wordpress en utilisant un tableau?

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"

4
maheshwaghmare

Générer automatiquement des codes courts à partir d'un tableau:

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
2
birgire