Hinzufügen der Medien-Upload-Schaltfläche zur Benutzerprofilseite (nach einem Lernprogramm)

Im Moment befolge ich ein Tutorial von Steven Slack auf s2webpress.com, wie man ein Author Image Upload-Feld zu einer Benutzerprofilseite hinzufügt. Es ist mir gelungen, das meiste davon zum Laufen zu bringen, abgesehen von dem Teil, der es mir ermöglicht, das Medienmanager-System WP 3.5 zu verwenden.

Das jQuery-Snippet, das ich hinzufügen möchte, befindet sich in diesem Code:

/** * Adds additional user fields * more info: http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields */ function bck_authorimagefield( $user ) { ?> 

<img src="https://wordpress.stackexchange.com/questions/117593/adding-media-upload-button-to-user-profile-page-following-a-tutorial/ID ) ); ?>" style="width:150px;">
<input type="text" name="user_meta_image" id="user_meta_image" value="ID ) ); ?>" class="regular-text" /> <input type='button' class="additional-user-image button-primary" value="" id="uploadimage"/>
prefix; $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM " . $prefix . "posts WHERE guid RLIKE %s;", $parse_url[1] ) ); // Returns null if no attachment is found. return $attachment[0]; } /* * Retrieve the appropriate image size */ function bck_getadditionalusermetathumb() { $attachment_url = esc_url( get_the_author_meta( 'user_meta_image', $post->post_author ) ); // grabs the id from the URL using Frankie Jarretts function $attachment_id = bck_getattachmentimagebyurl( $attachment_url ); // retrieve the thumbnail size of our image $image_thumb = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); // return the image thumbnail return $image_thumb[0]; } function bck_displayauthorimage() { // retrieve our additional author meta info $user_meta_image = esc_attr( get_the_author_meta( 'user_meta_image', $post->post_author ) ); // make sure the field is set if ( isset( $user_meta_image ) && $user_meta_image ) { // only display if function exists if ( function_exists( 'bck_getadditionalusermetathumb' ) ) ?> <img alt="author photo" src="https://wordpress.stackexchange.com/questions/117593/adding-media-upload-button-to-user-profile-page-following-a-tutorial/" class="author-photo" /> <?php } }

Wenn ich jedoch versuche, das Plugin zu aktivieren, in dem dieser Autor-Bildcode enthalten ist, erhalte ich den folgenden Fehler:

 Parse error: syntax error, unexpected '$', expecting '&' or variable (T_VARIABLE) in [the file's base URL]/authorimage.php on line 154 

Zeile 154 ist die erste Zeile dieses jQuery-Snippets, das ich oben hinzugefügt habe. Ich habe diesen Ausschnitt komplett aus dem Plugin entfernt und einfach alles andere verlassen, und es funktionierte bis zu dem Punkt, dass kein Dialogfeld erschien, wenn ich auf der Seite Benutzerprofil auf Bild hochladen klicke.

Fehle ich hier etwas? Ich dachte, PHP könnte jQuery enthalten, solange es mit: jQuery(document).ready(function($){ ....

Solutions Collecting From Web of "Hinzufügen der Medien-Upload-Schaltfläche zur Benutzerprofilseite (nach einem Lernprogramm)"

Ja, PHP kann JavaScript (und CSS und HTML) enthalten, aber Sie müssen sagen: “Hier endet PHP -> andere Sprache -> hier startet PHP” , so:

 < ?php echo '
something'; ?> < ?php echo 'another thing';

Auf der anderen Seite wird Ihr Code nicht funktionieren, weil Sie das JS in der Mitte von Nirgendwo abladen. Es ist nicht klar, ob Sie ein Plugin machen ( was Sie tun sollten ) oder es für das Thema verwenden. In Themen ist das manchmal erlaubt, aber das ist hier nicht der Fall.

Sie müssen diesen JS-Code als separate Datei hinzufügen und Folgendes verwenden:

 add_action( 'admin_enqueue_scripts', 'profile_script_wpse_117593' ); function profile_script_wpse_117593( $hook_suffix ) { if ( 'profile.php' == $hook_suffix ) { // URL TO USE IN A PLUGIN: plugins_url( '/js/script.js', __FILE__ ); wp_enqueue_script( 'my-script' // Handle , get_stylesheet_directory_uri() . '/js/script.js' // Theme URL , array( 'jquery' ) // Dependencies , false // Version , true // In footer ); } } 

Oder wir können faul sein und es direkt in der Fußzeile der Profilseite ausdrucken:

 add_action( 'admin_footer-profile.php', 'dump_script_wpse_117593' ); function dump_script_wpse_117593() { ?>  < ?php } 

Beachten Sie, dass dies wichtig ist, um auf unseren Bildschirm zu zielen, damit das Skript nicht im gesamten Administrationsbereich in die Warteschlange gestellt wird.

Dies ist definitiv dazu gedacht, wie ein Plugin wie oben erwähnt verwendet zu werden. Die Jquery soll in einem Plugin in eine entsprechende Skriptdatei geschrieben werden. Ich werde den Artikel aktualisieren und erwähnen, dass der Code nicht hineinfallen und Code verwenden soll.

Es sollte nur als Demonstration von Methoden verwendet werden.