Ich versuche ein benutzerdefiniertes Widget zu erstellen. Meine Codes sind wie folgt:
class techno_widget extends WP_Widget { function __construct() { parent::__construct( 'techno_widget', __('Recent Full Post', 'techno_widget_domain'), array( 'description' => __( 'A full post will be appeared on Sidebar', 'techno_widget_domain' ), ) ); } public function widget( $args, $instance ) { $title = apply_filters( 'widget_title', $instance['title'] ); $blog-title = $instance['blog-title']; echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; echo $instance['blog-title']; echo $args['after_widget']; } public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'wpb_widget_domain' ); } $blog-title = $instance[ 'blog-title' ]; ?> <label for="get_field_id( 'blog-title' ); ?>"> <select class="widefat" id="get_field_id( 'blog-title' ); ?>" name="get_field_name( 'blog-title' ); ?>"> 'post', )); if($fullpost->have_posts()): while($fullpost->have_posts()): $fullpost->the_post(); ?> <option value="">
- Warum wird die $ old_instance für die Widget-Update-function benötigt?
- Warum wird in diesem Widget keine Liste mit Posts meines benutzerdefinierten Post-Typs angezeigt?
- is_active_sidebar () Gibt immer False zurück
- Wie erhalte ich die letzte Widget-Box vom selben Widget-Bereich?
- Wie kann die searchform.php wissen, ob sie in einer registrierten Sidebar-ID 'sidebar-1' oder 'sidebar-2' verwendet wird?
- Dashboard Widgets - Add Admin-Seite mit der gleichen functionalität
<label for="get_field_id( 'title' ); ?>"> <input class="widefat" id="get_field_id( 'title' ); ?>" name="get_field_name( 'title' ); ?>" type="text" value="" />
<?php } public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; } function techno_load_widget() { register_widget( 'techno_widget' ); } add_action( 'widgets_init', 'techno_load_widget' );
Jetzt zeigt WordPress einen Fehler an. Es sagt,
Parse-Fehler: Syntaxerrors, unerwarteter ‘=’ in C: \ xampp \ htdocs \ wpexperiment \ wp-content \ themes \ rechtsanwalt \ functions.php in Zeile 87
Was ist falsch an meinem Code? Wie kann ich den Wert meiner Auswahlbox erhalten?
Sie haben die geschweifte techno_widget
der class techno_widget
, müssen die function techno_load_widget
außerhalb der class techno_widget
und haben die Variable $ blog-title wrong. You can't declare variable with
deklariert wrong. You can't declare variable with
wrong. You can't declare variable with
– wrong. You can't declare variable with
. It is core
. It is core
PHP-Konvention. Also überschreibe ich deinen Code wie unten-
class techno_widget extends WP_Widget { function __construct() { parent::__construct( 'techno_widget', __('Recent Full Post', 'techno_widget_domain'), array( 'description' => __( 'A full post will be appeared on Sidebar', 'techno_widget_domain' ), ) ); } public function widget( $args, $instance ) { $title = apply_filters( 'widget_title', $instance['title'] ); $blog_title = $instance['blog_title']; echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; echo $instance['blog_title']; echo $args['after_widget']; } public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'wpb_widget_domain' ); } $blog_title = $instance[ 'blog_title' ]; ?>
< ?php } public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; } } function techno_load_widget() { register_widget( 'techno_widget' ); } add_action( 'widgets_init', 'techno_load_widget' );
Und das hat funktioniert. Hier ist der Screenshot
Jetzt können Sie diesen Code wie gewünscht ändern. Aber ich denke, wo Sie $instance['blog-title']
(in meinem Code ist das $instance['blog_title']
), könnten Sie $instance['title']
.
Und Sie können die Eingabe als Eingabe von anderen Eingabefeldern erhalten. Für weitere Informationen bitte google es.