私は投稿が公開されたときに私がjavascriptを追加しようとしているので、それは私のユーザーにとってもっと目立つようにしていますが、何を使うべきかわからない。 publish_postとsave_postを試してみましたが、死なないとうまくいきません。コードの末尾に。私は、ワードプレスのコアコードを避けようと懸命に努力しました、そして、私は本当にこの問題のためにそうしたくないです...ここに私のコードがあります:
function run_when_post_published($post_ID){
echo '<script type="text/javascript">
alert("essai");
</script>';
}
add_action('publish_slider', 'run_when_post_published');
ご協力いただきありがとうございます !
管理者側でスクリプトをエンキューするには、 admin_enqueue_scripts
フックを使用する必要があります。このコールバックでは、渡された$hook
引数を使用して、適切なページ(つまり投稿/投稿タイプを編集するページ)にあることを確認します。
必要に応じて、投稿が特定の種類であるかどうかを確認できます(これが投稿、ページ、またはcptの場合のみ)。
最後に、WordPressの内蔵通知システムを借ります。これは?message=1
を生成します。値1〜10は通知メッセージを決定します。 (この関係については@ Azizurのanswerをご覧ください)。
この例では、message
変数が設定されている場合にのみJavaScriptをエンキューします。
それから私達のスクリプトをエンキューします(私が探している場所は[theme-folder]/js/notice.js
(あるいはこれをあなたのプラグインフォルダーを指す))そしてそれを wp_localise_script
で「ローカライズ」しますmessage
は、グローバルオブジェクトwpsePost
(特にwpsePost.message
)のプロパティとして私たちのjavascriptファイルで利用可能になるでしょう。
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 );
}
}
次にnotice.js
を作成します。
jQuery(document).ready(function($) {
if( wpsePost.Message == 6 ){
alert('Post published');
}else if( wpsePost.Message == 1 ){
alert('Post updated');
}
});
これはカスタムpost_type 'book'のカスタムメッセージを作成する方法の例です。配列インデックス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' );
あなたはあなたのJavaScriptメッセージをエコーするために同じフックを使うことができるかもしれません、しかし私はそれをすることをお勧めしません。