编程 编程 关注:1 内容:58

WordPress防止发表重复标题的文章代码

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • 编程
    • Lv.18
      神隐会员
      shfwpt.com

      将下面代码复制粘贴到你主题的 functions.php 文件里面:

      //发表文章时禁止与已存在的标题相重复
      add_action( 'admin_print_footer_scripts', 'duplicate_titles_enqueue_scripts', 100 );
      function duplicate_titles_enqueue_scripts() {
      ?><script>jQuery(function($){    function checkTitleAjax(title, id,post_type) {        var data = {
                  action: 'title_checks',
                  post_title: title,
                  post_type: post_type,
                  post_id: id
              };
              $.post(ajaxurl, data, function(response) {
                  $('#message').remove();
                  $('#poststuff').prepend('<div id="message" class="updated below-h2 fade "><p>'+response+'</p></div>');
              }); 
          };
          $('#title').change(function() {        var title = $('#title').val();        var id = $('#post_ID').val();        var post_type = $('#post_type').val();
              checkTitleAjax(title, id,post_type);
          });
       
      });</script><?php}    
      // 接收前端ajax参数add_action('wp_ajax_title_checks', 'duplicate_title_checks_callback');function duplicate_title_checks_callback(){ 
          global $wpdb;            
          $title = $_POST['post_title'];
          $post_id = $_POST['post_id']; 
          $titles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post'
                      AND post_title = '{$title}' AND ID != {$post_id} "; 
          $results = $wpdb->get_results($titles); 
          if($results) {        echo "<span style='color:red'>". _( '此标题已存在,请换一个标题!' , '' ) ." </span>";
          } else {        echo '<span style="color:green">'._('恭喜,此标题未与其他文章标题重复!' , '').'</span>';
          } 
          die();
      } 
      // 检测后端标题并且避免同名文章更新草稿add_action( 'publish_post','duplicate_titles_wallfa_bc' ) ;function duplicate_titles_wallfa_bc( $post ){    global $wpdb ;
          $title = $_POST['post_title'] ;
          $post_id = $post ; 
          $wtitles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post'
                              AND post_title = '{$title}' AND ID != {$post_id} " ; 
          $wresults = $wpdb->get_results( $wtitles ) ; 
          if ( $wresults ){
              $wpdb->update( $wpdb->posts, array( 'post_status' =>                'draft' ), array( 'ID' => $post ) ) ;
              $arr_params = array( 'message' => '10', 'wallfaerror' => '1' )  ;      
              $location = add_query_arg( $arr_params , get_edit_post_link( $post , 'url' ) ) ;
              wp_redirect( $location  ) ;        
              exit ;
          }
      } 
      /// 文章提交更新后的提示add_action( 'admin_notices', 'not_published_error_notice' );   
      function not_published_error_notice() {    if(isset($_GET['wallfaerror']) == 1 ){       ?>
             <div class="updated">
             <p style='color:red' ><?php _e('貌似已经存在相同标题的文章,若您使用了文章别名作为固定链接,则可以通过修改本文的固定链接来使标题不再重复!' , '') ?></p>
             </div>
             <?php
          }
      }// 禁用自动保存add_action( 'wp_print_scripts', 'disable_autosave' ) ;function disable_autosave(){
          wp_deregister_script( 'autosave' ) ;
      }

      请登录之后再进行评论

      登录
    • 到底部
    • 做任务
    • 返回顶部