1. 程式人生 > 其它 >WordPress純程式碼禁止發表重複標題的文章

WordPress純程式碼禁止發表重複標題的文章

實所有外掛後端程式碼都等同於加入到functions.php的程式碼片段,functions.php裡的程式碼片段可以做成外掛,那麼反過來外掛自然也可以整合到functions.php裡面。

外掛主要是方便管理,但同時也增加了靜態資源請求數,如果你知道怎麼處理這些請求,其實用不用外掛也知道該如何優化網站 —— 扯遠了。 下面我就直接貼上程式碼版的吧。

主要修改的地方是:將js轉為script標籤內容,等於消除一個請求,翻譯也省了,換成中文。 將下面程式碼複製貼上到你主題的functions.php檔案裡面,這個不用解釋了吧?

/**
 * 發表文章時禁止與已存在的標題相重複
 * Modify from Plugin: Duplicate Title Validate
 * Description: this plugin help , not allow publish Duplicate Title . 
 * Author: hasan movahed
 * Reviser: INLOJV
 * Version: 1.0
 * Author URI: wallfa .com
 * Reviser URI: inlojv .com
 
*/ // 發表文章頁面,前端抓取標題並使用AJAX傳送請求 add_action( 'admin_print_footer_scripts', 'duplicate_titles_enqueue_scripts', 100 ); function duplicate_titles_enqueue_scripts() { ?> 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 "". _( '此標題已存在,請換一個標題!' , '' ) ." "; } else { echo ''._('恭喜,此標題未與其他文章標題重複!' , '').''; } 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 ){ ?>