Erstellen eines Shortcodes basierend auf Benutzereinstellungen

Hintergrund: Erstellen eines dynamischen Shortcodes basierend auf Benutzereingaben. Dieser Shortcode sollte die Ausgabe von do_shortcode basierend auf den vom Benutzer ausgewählten Feldern ändern.

Beispiel: Auf einer Seite wählt ein Benutzer aus

“Zeig mir: (X) Skateboarding (X) Basketball () Hockey”

Wenn sie auf “Senden” klicken, sollte der folgende Shortcode angezeigt werden:

 [shortcode_name types="Skateboarding, Basketball"] 

und da Hockey nicht ausgewählt wurde, wäre Hockey nicht enthalten.

Das ist es, was ich versuche zu erreichen, ich habe nur eine harte Zeit, wie ich es tatsächlich machen kann.

Solutions Collecting From Web of "Erstellen eines Shortcodes basierend auf Benutzereinstellungen"

Theorie

Es wäre vielleicht schwer gewesen, für Sie zu schreiben, aber es ist eigentlich ziemlich klar, was Sie erreichen wollen.

Ein Shortcode ist eine gute Möglichkeit, dynamische Inhalte in eine Seite (oder Post) einzufügen. Der Punkt, an dem Ihre Idee fehlschlägt, ist die Vorstellung eines “dynamischen Shortcodes”.

Verwenden Sie den Shortcode, um das Formular in Ihren Inhalt einzufügen, und lassen Sie den callback behandeln, was nach der Übermittlung geschieht.

Machen Sie sich mit der Handhabung von Formularen in PHP und mit dem Unterschied zwischen HTTP-POST und HTTP-GET ( Ressource 2 , Ressource 3 ) vertraut.

Trainieren

Nehmen Sie Folgendes als Beweis für das Konzept und nicht als Kopier- / Paste-Ready-Lösung:

Kurzwahl: [wpse_161632_sports_selection_form]

PHP:

 < ?php /* Plugin Name: WPSE_161632 Plugin URI: http://wordpress.stackexchange.com/questions/161632/ Description: Shortcode form handler example Version: 1.0 Author: Johannes Pilkahn License: GPL3 */ /* Copyright 2014 Johannes Pilkahn This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ if ( ! class_exists( 'WPSE_161632' ) ) : class WPSE_161632 { /** * Form handler * * @since 1.0 * @access public * @see constructor */ public function form_handler( $atts = '' ) { // only relevant if the SC is supposed to have extra parameters extract( shortcode_atts( array( 'example_attribute' => 1 ), $atts ) ); if ( ( isset( $_POST['types'] ) ) { foreach( $_POST['types'] as $type ) { // do something } $this->output( true ); } else { $this->output( false ); } } /** * Outputs the form * * @since 1.0 * @access public * @param bool $output */ public function output( $submitted ) { $options = array( array( 'value' => 'skateboarding' 'label' => __( 'Skateboarding', 'your-text-domain' ) ), array( 'value' => 'basketball' 'label' => __( 'Basketball', 'your-text-domain' ) ), array( 'value' => 'hockey' 'label' => __( 'Hockey', 'your-text-domain' ) ) ); if ( $submitted ) { echo __( 'The form has been submitted!', 'your-text-domain' ); } echo '
'; foreach ( $options as $option ) { echo ''; } echo '
'; } /** * Constructor * * @since 1.0 * @access public */ public function __construct() { add_shortcode( 'wpse_161632_sports_selection_form', array( $this, 'form_handler' ) ); } } endif; // class exists $wpse_161632 = new WPSE_161632; ?>

Wenn Sie auf die Schaltfläche “ShortCode einfügen” klicken, sollten Sie JavaScript / jQuery verwenden, um zu sehen, welche Checkboxen aktiviert sind, aus denen Sie den Shortcode erstellen. Nachdem der Shortcode erstellt wurde, verwenden Sie window.send_to_editor('[shortcode]') .

so etwas in etwa:

 $("#insert-shortcode").on('click',function(ev) { ev.preventDefault(); var show = ''; $(".checkboxes").each(function() { if ($(this).is(":checked")) show += $(this).val() + ","; }); window.send_to_editor('[shortcode show="' + show.substring(0,(show.length-1)) + '"]'); }); 

nicht getestet, aber so etwas sollte funktionieren. passen Sie die Selektoren natürlich an Ihre spezifischen Namen an. Ich habe eine Vermutung über mehrere Dinge gemacht. Wenn ich also einen Teil überspringe, den Sie weiter erklären müssen, lassen Sie es uns wissen.