it-swarm.com.de

Fügen Sie Javascript hinzu, wenn der Beitrag veröffentlicht wird

Ich versuche, Javascript hinzuzufügen, wenn ein Beitrag veröffentlicht wurde, damit er für meinen Benutzer auffälliger ist, aber ich kann nicht herausfinden, was ich verwenden soll. Ich habe es mit publish_post und save_post versucht, aber es funktioniert nur, wenn ich die gesetzt habe. am Ende des Codes. Ich habe mich so sehr bemüht, mich aus dem WordPress-Kerncode herauszuhalten, und ich möchte das wegen dieses Problems wirklich nicht müssen ... hier ist mein Code:

function run_when_post_published($post_ID){
    echo '<script type="text/javascript">
        alert("essai");
    </script>';
}
add_action('publish_slider', 'run_when_post_published');

Danke für Ihre Hilfe !

3
Matoma16

Zum Einreihen von Skripten auf der Administratorseite sollten Sie den admin_enqueue_scripts hook verwenden. In diesem Rückruf überprüfe ich, ob sich auf der entsprechenden Seite (d. H. Der Seite, auf der Sie Beiträge/Beitragstypen bearbeiten) das übergebene Argument $hook befindet.

Optional können Sie überprüfen, ob der Beitrag von einem bestimmten Typ ist (falls dies nur für Beiträge, Seiten oder ein CPT gilt).

Schließlich werden wir das eingebaute Benachrichtigungssystem von WordPress ausleihen. Dies erzeugt den ?message=1. Der Wert 1-10 bestimmt die Hinweismeldung. (Siehe @ Azizurs Antwort für diese Beziehung).

In diesem Beispiel wird unser Javascript nur in die Warteschlange gestellt, wenn die Variable message gesetzt ist.

Wir stellen dann unser Skript in die Warteschlange (von dem ich angenommen habe, dass es sich in folgendem Verzeichnis befindet: [theme-folder]/js/notice.js (alternativ verweisen wir dieses auf Ihren Plug-In-Ordner). Dann 'lokalisieren' wir es mit wp_localise_script . Dies bedeutet den Wert von message in unserer Javascript-Datei als eine Eigenschaft des globalen Objekts wpsePost (insbesondere wpsePost.message) verfügbar sein. Sie können dann alles entsprechend seinem Wert tun.

add_action( 'admin_enqueue_scripts', 'wpse50770_add_admin_scripts', 10, 1 );
function wpse50770_add_admin_scripts( $hook ) {
    global $post;

    //Only need to enque script on the post.php page
    //Optional: restirct by post type
    if ( 'post.php' == $hook  && 'post' == $post->post_type && isset($_GET['message']) ) {     
        $message_id = absint( $_GET['message'] );
        wp_enqueue_script(
            'wpse-notice',
            get_template_directory_uri() . '/js/notice.js',
            array('jquery')
        );
        $data = array( 'Message' => $message_id);
        wp_localize_script( 'wpse-notice', 'wpsePost', $data );
    }
}

Dann erstelle den notice.js:

jQuery(document).ready(function($) {  

    if( wpsePost.Message == 6 ){
        alert('Post published');

    }else if( wpsePost.Message == 1 ){
        alert('Post updated');
    }

});
2
Stephen Harris

Hier ist ein Beispiel, wie Sie eine benutzerdefinierte Nachricht für ein benutzerdefiniertes post_type-Buch erstellen können. Beachten Sie den Array-Index 6 "Book Published".

//add filter to ensure the text Book, or book, is displayed when user updates a book 

function codex_book_updated_messages( $messages ) {
  global $post, $post_ID;

  $messages['book'] = array(
    0 => '', // Unused. Messages start at index 1.
    1 => sprintf( __('Book updated. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Custom field updated.'),
    3 => __('Custom field deleted.'),
    4 => __('Book updated.'),
    /* translators: %s: date and time of the revision */
    5 => isset($_GET['revision']) ? sprintf( __('Book restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Book published. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Book saved.'),
    8 => sprintf( __('Book submitted. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Book scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview book</a>'),
      // translators: Publish box date format, see http://php.net/date
      date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Book draft updated. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}
add_filter( 'post_updated_messages', 'codex_book_updated_messages' );

Möglicherweise können Sie denselben Hook zum Echo Ihrer JavaScript-Nachricht verwenden, ich würde dies jedoch nicht empfehlen.

0
Azizur Rahman