WordPressの投稿内容を保存する時に、
NGワードを設定して、チェックしたい時に利用できます。
▼functions.phpに以下を追記
※プラグインTinyMCE Advancedを使っている場合の例です。
($(“iframe#content_ifr”).contents().find(‘body’).text()で その時点の投稿内容を取得してます。この部分は必要に応じて変更)
※NGワード設定部分に、禁止ワードを記述(array形式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
add_action('admin_head-post-new.php', 'post_ng_word_check'); // 新規投稿画面時に起動 add_action('admin_head-post.php', 'post_ng_word_check'); // 投稿編集画面時に起動 function post_ng_word_check(){ global $post; if (is_admin() && $post->post_type == 'post'){ ?> <script language="javascript" type="text/javascript"> $(function(){ $('#publish').on('click', function(){ if($(this).data("valid")) { return true; } //必要に応じて以下部分変更 var $content = $("iframe#content_ifr").contents().find('body').text(); var $ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>'; $.ajax({ type: 'POST', url: $ajaxurl, headers: { "cache-control": "no-cache" }, cache: false, data: { action: 'my_pre_submit_validation', security: '<?php echo wp_create_nonce( 'pre_publish_validation' ); ?>', content: $content, }, success: function( response ){ if (response.indexOf('true') > -1 || response == true) { $('#publish').data("valid", true).trigger('click'); } else { alert("エラー: " + response); $('#publish').data("valid", false); } $('#ajax-loading').hide(); $('#publish').removeClass('button-primary-disabled'); $('#save-post').removeClass('button-disabled'); } }); return false; }); }); </script> <?php } } add_action('wp_ajax_my_pre_submit_validation', 'pre_submit_validation'); function pre_submit_validation(){ //セキュリティのチェック check_ajax_referer( 'pre_publish_validation', 'security' ); $content = $_POST['content']; //NGワード設定 $ng_texts = array('NGワード1','NGワード2'); //NGバリデーションの実行 foreach($ng_texts as $ng_text){ if(strpos($content, $ng_text) !== false){ die('投稿記事中に"' . $ng_text . '"が見つかりました。'); } } //問題が無い場合はtrueを返す die('true'); } |
admin_head-post-new.php
admin_head-post.php
のhookを使用。
参考URL
WordPressで投稿時にバリデーションを行う方法
https://41y.me/validate-post/
WordPress フック(hook)
http://wpcj.net/glossary/hook_suffix