WordPress Option Page Generator

Die diversen Generatoren von Extreme Ventures zum Erzeugen von WP-Code dürfte wohl den meisten WP-Benutzern bekannt sein. Auf der Suche eine einfache Optionsseite ohne grossen Aufwand zu erzeugen, bin ich auf den Option Page Generator von Jeremy Hixon gestossen. Für eine einfache Optionsseite genau das richtige, denn der Generator ist einfach gehalten – d.h. nicht mit Optionen überladen. Der Code ist im Handumdrehen generiert und erspart einem die Zeit für sonstiges Kopieren und Anpassen von Code.

Webauftritt für Kultur und Wirtschaft | Webdesign | Schwyz | Zug | Luzern | Altdorf | ulrich.digital

Die Form ausfüllen und eine Klasse mit allen nötigen Methoden wird generiert:

<?php 
class ShopWeiterleitung {
  private $shop_weiterleitung__options;

  public function __construct() {
    add_action( 'admin_menu', array( $this, 'shop_weiterleitung__add_plugin_page' ) );
    add_action( 'admin_init', array( $this, 'shop_weiterleitung__page_init' ) );
  }

  public function shop_weiterleitung__add_plugin_page() {
    add_menu_page(
    'Shop Weiterleitung ', // page_title
    'Shop Weiterleitung ', // menu_title
    'manage_options', // capability
    'shop-weiterleitung', // menu_slug
    array( $this, 'shop_weiterleitung__create_admin_page' ), // function
      'dashicons-admin-generic', // icon_url
      80 // position
    );
  }

  public function shop_weiterleitung__create_admin_page() {
    $this->shop_weiterleitung__options = get_option( 'shop_weiterleitung__option_name'  ); ?>

    <div class="wrap">
      <h2>Shop Weiterleitung </h2>
      <p>Hier kann die Weiterleitung des Shops ein- und ausgeschaltet werden.</p>
      <?php settings_errors(); ?>
      <form method="post" action="options.php">
        <?php
        settings_fields( 'shop_weiterleitung__option_group' );
        do_settings_sections( 'shop-weiterleitung-admin' );
        submit_button();
        ?>
      </form>
    </div>
    <?php 
  }

  public function shop_weiterleitung__page_init() {
    register_setting(
      'shop_weiterleitung__option_group', // option_group
      'shop_weiterleitung__option_name', // option_name
      array( $this, 'shop_weiterleitung__sanitize' ) // sanitize_callback
    );

    add_settings_section(
      'shop_weiterleitung__setting_section', // id
      'Settings', // title
      array( $this, 'shop_weiterleitung__section_info' ), // callback
      'shop-weiterleitung-admin' // page
    );

    add_settings_field(
      'shop_weiterleitung_wp_redirect_0', // id
      'Shop Weiterleitung (wp_redirect)', // title
      array( $this, 'shop_weiterleitung_wp_redirect_0_callback' ), // callback
        'shop-weiterleitung-admin', // page
        'shop_weiterleitung__setting_section' // section
    );
  }

  public function shop_weiterleitung__sanitize($input) {
    $sanitary_values = array();
    if ( isset( $input['shop_weiterleitung_wp_redirect_0'] ) ) {
      $sanitary_values['shop_weiterleitung_wp_redirect_0'] = $input['shop_weiterleitung_wp_redirect_0'];
    }

    return $sanitary_values;
  }

  public function shop_weiterleitung__section_info() {	
  }

  public function shop_weiterleitung_wp_redirect_0_callback() { ?> 
    <fieldset>
      <?php $checked = ( isset( $this->shop_weiterleitung__options['shop_weiterleitung_wp_redirect_0'] ) && $this->shop_weiterleitung__options['shop_weiterleitung_wp_redirect_0'] === 'shop-anzeigen' ) ? 'checked' : '' ; ?>
    <label for="shop_weiterleitung_wp_redirect_0-0">
      <input type="radio" name="shop_weiterleitung__option_name[shop_weiterleitung_wp_redirect_0]" id="shop_weiterleitung_wp_redirect_0-0" value="shop-anzeigen" <?php echo $checked; ?>>  Shop anzeigen
    </label><br>
    <?php $checked = ( isset( $this->shop_weiterleitung__options['shop_weiterleitung_wp_redirect_0'] ) && $this->shop_weiterleitung__options['shop_weiterleitung_wp_redirect_0'] === 'shop-verstecken' ) ? 'checked' : '' ; ?>
    <label for="shop_weiterleitung_wp_redirect_0-1"><input type="radio" name="shop_weiterleitung__option_name[shop_weiterleitung_wp_redirect_0]" id="shop_weiterleitung_wp_redirect_0-1" value="shop-verstecken" <?php echo $checked; ?>>  Shop verstecken</label></fieldset> <?php
  }

if ( is_admin() )
	$shop_weiterleitung_ = new ShopWeiterleitung();

/* 
 * Retrieve this value with:
 * $shop_weiterleitung__options = get_option( 'shop_weiterleitung__option_name' ); // Array of All Options
 * $shop_weiterleitung_wp_redirect_0 = $shop_weiterleitung__options['shop_weiterleitung_wp_redirect_0']; // Shop Weiterleitung (wp_redirect)
 */
?>

Was im Backend dann so aussieht:

Webseiten für Kultur und Wirtschaft | Webdesign | Schwyz | Zug | Luzern | Altdorf | ulrich.digital

Am Ende des generierten Codes werden sogar die Variablen, zur weiteren Verwendung ausgegeben. Z.B. wie in diesem Bespiel $shop_weiterleitung_wp_redirect_0 für ein Weiterleiten der Shop- auf die Startseite:

function wpc_shop_url_redirect() {

  if ( is_shop() ) {
    $shop_weiterleitung__options = get_option( 'shop_weiterleitung__option_name' ); 
    if ( $shop_weiterleitung__options ) {
      $shop_weiterleitung_wp_redirect_0 =     $shop_weiterleitung__options['shop_weiterleitung_wp_redirect_0'];
      if ( $shop_weiterleitung_wp_redirect_0 == "shop-verstecken" ) {
        wp_redirect( home_url() );
        exit();
      } // endif
    } // endif
  } // endif

}
add_action( 'template_redirect', 'wpc_shop_url_redirect' );
1 Star2 Stars3 Stars4 Stars5 Stars (5)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert