Changeset 2071539
- Timestamp:
- 04/19/2019 08:17:04 PM (7 years ago)
- Location:
- wp-autotags/trunk
- Files:
-
- 2 edited
-
readme.txt (modified) (2 diffs)
-
wp-autotags.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-autotags/trunk/readme.txt
r1905335 r2071539 1 1 === WP AutoTags === 2 2 Contributors: Zhys 3 Tags: 自动 添加相关标签,auto tags, wp_autotags, tags, auto, save, posts, existing, content, search, tag, tf-idf, edit, publish, post, autotags, wat, keyword, keywords, extract, analysis, aatags, autotag, wp_aatags, wp_aatag, automatically, extraction, English, Chinese, article, 自动Tags, WordPress自动添加标签, 文章自动添加标签, 文章智能标签, 相关标签, 自动标签, 文章自动标签, 自动更新标签, wp-auto-tags, WP AutoTags4 Donate link: http ://www.9sep.org/3 Tags: 自动标签, WordPress自动添加标签, autotags, 自动添加相关标签,auto tags, wp_autotags, tags, auto, save, posts, existing, content, search, tag, tf-idf, edit, publish, post, autotags, wat, keyword, keywords, extract, analysis, aatags, autotag, wp_aatags, wp_aatag, automatically, extraction, English, Chinese, article, 自动Tags, 文章自动添加标签, 文章智能标签, 相关标签, 文章自动标签, 自动更新标签, wp-auto-tags, WP AutoTags 4 Donate link: https://www.9sep.org/ 5 5 Author URI: https://www.9sep.org/author/zhys 6 Plugin URI: http ://www.9sep.org/wp-auto-tags7 Stable tag: 0.1.1 16 Plugin URI: https://www.9sep.org/wp-auto-tags 7 Stable tag: 0.1.12 8 8 Requires at least: 3.5.1 9 Tested up to: 4.9.69 Tested up to: 5.1.1 10 10 License: GPLv2 or later 11 11 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 37 37 38 38 == Changelog == 39 2019-04-20 v0.1.12 Fix des,Tested up to 5.1.1 39 40 2018-07-06 v0.1.11 Fix Remove the digital label ,Add simple preview 40 41 2016-02-28 v0.1.7 Fix inclusion of special characters THX@Mark :) -
wp-autotags/trunk/wp-autotags.php
r1905335 r2071539 2 2 /* 3 3 Plugin Name: WP AutoTags 4 Description: Often publish articles and updates people loves forgets to set tags when editing an article, the article automatically add keywords tag. tag extraction based on TF-IDF implementation. Built-in TF-IDF interface does not work when you try to find an existing tag in WordPress. If found, these markers are added to the post automatically each time you save the post.5 Version: 0.1.1 14 Description:英文:Often publish articles and updates people loves forgets to set tags when editing an article, the article automatically add keywords tag. tag extraction based on TF-IDF implementation. Built-in TF-IDF interface does not work when you try to find an existing tag in WordPress. If found, these markers are added to the post automatically each time you save the post. 5 Version: 0.1.12 6 6 Author: Zhys 7 7 Author URI: https://www.9sep.org/author/zhys 8 Plugin URI: http ://www.9sep.org/wp-auto-tags8 Plugin URI: https://www.9sep.org/wp-auto-tags 9 9 License: GPLv2 10 */10 */ 11 11 12 function wp_aatags_html2text($ep) {13 $search = array("'<script[^>]*?>.*?</script>'si", "'<[\/\!]*?[^<>]*?>'si", "'([\r\n])[\s]+'", "'&(quot|#34|#034|#x22);'i", "'&(amp|#38|#038|#x26);'i", "'&(lt|#60|#060|#x3c);'i", "'&(gt|#62|#062|#x3e);'i", "'&(nbsp|#160|#xa0);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'&(reg|#174);'i", "'&(deg|#176);'i", "'&(#39|#039|#x27);'", "'&(euro|#8364);'i", "'&a(uml|UML);'", "'&o(uml|UML);'", "'&u(uml|UML);'", "'&A(uml|UML);'", "'&O(uml|UML);'", "'&U(uml|UML);'", "'ß'i",);14 $replace = array("", "", "\\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), chr(174), chr(176), chr(39), chr(128), "ä", "ö", "ü", "Ä", "Ö", "Ü", "ß",);15 return preg_replace($search, $replace, $ep);12 function wp_aatags_html2text($ep) { 13 $search = array("'<script[^>]*?>.*?</script>'si", "'<[\/\!]*?[^<>]*?>'si", "'([\r\n])[\s]+'", "'&(quot|#34|#034|#x22);'i", "'&(amp|#38|#038|#x26);'i", "'&(lt|#60|#060|#x3c);'i", "'&(gt|#62|#062|#x3e);'i", "'&(nbsp|#160|#xa0);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'&(reg|#174);'i", "'&(deg|#176);'i", "'&(#39|#039|#x27);'", "'&(euro|#8364);'i", "'&a(uml|UML);'", "'&o(uml|UML);'", "'&u(uml|UML);'", "'&A(uml|UML);'", "'&O(uml|UML);'", "'&U(uml|UML);'", "'ß'i"); 14 $replace = array("", "", "\\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), chr(174), chr(176), chr(39), chr(128), "ä", "ö", "ü", "Ä", "Ö", "Ü", "ß"); 15 return preg_replace($search, $replace, $ep); 16 16 } 17 17 18 function wp_aatags_sanitize( $taglist) {19 $special_chars = array('?','、','。','“','”','《','》','!',',',':','?','.','[',']','/','\\','\=','<','>',':',';','\'','"','&','$','#','*','(',')','|','~','`','!','{','}','%','+',chr(0));20 /**21 * Filter the list of characters to remove from a taglist.22 * @param array $special_chars Characters to remove.23 */24 $taglist = preg_replace( "#\x{00a0}#siu", ' ', $taglist);25 $taglist = str_replace( $special_chars, '', $taglist);26 $taglist = str_replace( array( '%20', '+' ), '-', $taglist);27 $taglist = preg_replace( '/[\d]+/', '', $taglist);28 $taglist = preg_replace( '/[\r\n\t -]+/', '-', $taglist);29 $taglist = trim( $taglist, ',-_');30 return $taglist;18 function wp_aatags_sanitize($taglist) { 19 $special_chars = array('?', '、', '。', '“', '”', '《', '》', '!', ',', ':', '?', '.', '[', ']', '/', '\\', '\=', '<', '>', ':', ';', '\'', '"', '&', '$', '#', '*', '(', ')', '|', '~', '`', '!', '{', '}', '%', '+', chr(0)); 20 /** 21 * Filter the list of characters to remove from a taglist. 22 * @param array $special_chars Characters to remove. 23 */ 24 $taglist = preg_replace("#\x{00a0}#siu", ' ', $taglist); 25 $taglist = str_replace($special_chars, '', $taglist); 26 $taglist = str_replace(array('%20', '+'), '-', $taglist); 27 $taglist = preg_replace('/[\d]+/', '', $taglist); 28 $taglist = preg_replace('/[\r\n\t -]+/', '-', $taglist); 29 $taglist = trim($taglist, ',-_'); 30 return $taglist; 31 31 } 32 32 33 function wp_aatags_keycontents($keys, $num){34 $request = wp_remote_request('https://cws.9sep.org/extract/json',array('method'=>'POST','timeout'=>9,'body'=>array('text'=>$keys,'topk'=>$num)));35 if(wp_remote_retrieve_response_code($request) != 200){36 return 'rEr';37 }else{38 return wp_remote_retrieve_body($request);39 }33 function wp_aatags_keycontents($keys, $num) { 34 $request = wp_remote_request('https://cws.9sep.org/extract/json', array('method' => 'POST', 'timeout' => 9, 'body' => array('text' => $keys, 'topk' => $num))); 35 if (wp_remote_retrieve_response_code($request) != 200) { 36 return 'rEr'; 37 } else { 38 return wp_remote_retrieve_body($request); 39 } 40 40 } 41 41 42 function wp_aatags_kwsiconv($kws) {43 return wp_aatags_sanitize(@json_decode($kws,true)['kws']);42 function wp_aatags_kwsiconv($kws) { 43 return wp_aatags_sanitize(@json_decode($kws, true)['kws']); 44 44 } 45 45 46 function wp_aatags_alts($post_ID,$post_title,$post_content){ 47 $tags = get_tags( array('hide_empty' => false) ); 48 $tagx=get_option('wp_aatags_opts'); 49 $number=get_option('wp_aatags_aadnumber'); 50 switch ($tagx) { 51 case 3: 52 $d = strtolower($post_title); 53 break; 54 case 2: 55 $d = strtolower(wp_trim_words($post_content,999,'').' '.$post_title); 56 break; 57 default: 58 $d = strtolower(wp_trim_words($post_content,333,'').' '.$post_title); 59 break; 60 } 61 if ($tags) { 62 $i=0; 63 foreach ( $tags as $tag ) { 64 if ( strpos($d, strtolower($tag->name)) !== false ){ 65 wp_set_post_tags( $post_ID, $tag->name, true ); 66 $i++; 67 } 68 if ($i == $number) break; 69 } 70 } 46 function wp_aatags_alts($post_ID, $post_title, $post_content) { 47 $tags = get_tags(array('hide_empty' => false)); 48 $tagx = get_option('wp_aatags_opts'); 49 $number = get_option('wp_aatags_aadnumber'); 50 switch ($tagx) { 51 case 3: 52 $d = strtolower($post_title); 53 break; 54 case 2: 55 $d = strtolower(wp_trim_words($post_content, 999, '') . ' ' . $post_title); 56 break; 57 default: 58 $d = strtolower(wp_trim_words($post_content, 333, '') . ' ' . $post_title); 59 break; 60 } 61 if ($tags) { 62 $i = 0; 63 foreach ($tags as $tag) { 64 if (strpos($d, strtolower($tag->name)) !== false) { 65 wp_set_post_tags($post_ID, $tag->name, true); 66 $i++; 67 } 68 if ($i == $number) { 69 break; 70 } 71 72 } 73 } 71 74 } 72 75 73 function wp_aatags_run($post_ID) {74 $tags=get_option('wp_aatags_opts');75 $number=get_option('wp_aatags_aadnumber');76 global $wpdb;77 if(get_post($post_ID)->post_type == 'post' && !wp_is_post_revision($post_ID) && !get_the_tags($post_ID)) {78 $post_title = get_post($post_ID)->post_title;79 $post_content = get_post($post_ID)->post_content;80 switch ($tags) {81 case 3:82 $requix = strtolower($post_title.' '.wp_trim_words($post_content,333,''));83 break;84 case 2:85 $requix = strtolower($post_title.' '.wp_trim_words($post_content,999,''));86 break;87 default:88 $requix = strtolower($post_title);89 break;90 }91 $body = wp_aatags_keycontents(wp_aatags_html2text($requix),$number);92 if ($body != 'rEr') {93 $keywords = wp_aatags_kwsiconv($body);94 wp_add_post_tags($post_ID, $keywords);95 }else{96 wp_aatags_alts($post_ID,$post_title,$post_content);97 }98 }76 function wp_aatags_run($post_ID) { 77 $tags = get_option('wp_aatags_opts'); 78 $number = get_option('wp_aatags_aadnumber'); 79 global $wpdb; 80 if (get_post($post_ID)->post_type == 'post' && !wp_is_post_revision($post_ID) && !get_the_tags($post_ID)) { 81 $post_title = get_post($post_ID)->post_title; 82 $post_content = get_post($post_ID)->post_content; 83 switch ($tags) { 84 case 3: 85 $requix = strtolower($post_title . ' ' . wp_trim_words($post_content, 333, '')); 86 break; 87 case 2: 88 $requix = strtolower($post_title . ' ' . wp_trim_words($post_content, 999, '')); 89 break; 90 default: 91 $requix = strtolower($post_title); 92 break; 93 } 94 $body = wp_aatags_keycontents(wp_aatags_html2text($requix), $number); 95 if ($body != 'rEr') { 96 $keywords = wp_aatags_kwsiconv($body); 97 wp_add_post_tags($post_ID, $keywords); 98 } else { 99 wp_aatags_alts($post_ID, $post_title, $post_content); 100 } 101 } 99 102 } 100 103 101 function wp_aatags_admin_init() {102 if(get_bloginfo('language')=='zh-CN'||get_bloginfo('language')=='zh-TW'){103 $wp_aatags_setting='WP AutoTags处理范围';104 $wp_aatags_number='自动标签数量';105 }else{106 $wp_aatags_setting='WP AutoTags Matching range';107 $wp_aatags_number='Automatic Tags number';108 }109 add_settings_field('wp_aatags_opts',$wp_aatags_setting,'wp_aatags_setting','writing','default');110 add_settings_field('wp_aatags_aadnumber',$wp_aatags_number,'wp_aatags_aadnumber','writing','default');104 function wp_aatags_admin_init() { 105 if (get_bloginfo('language') == 'zh-CN' || get_bloginfo('language') == 'zh-TW') { 106 $wp_aatags_setting = 'WP AutoTags处理范围'; 107 $wp_aatags_number = '自动标签数量'; 108 } else { 109 $wp_aatags_setting = 'WP AutoTags Matching range'; 110 $wp_aatags_number = 'Automatic Tags number'; 111 } 112 add_settings_field('wp_aatags_opts', $wp_aatags_setting, 'wp_aatags_setting', 'writing', 'default'); 113 add_settings_field('wp_aatags_aadnumber', $wp_aatags_number, 'wp_aatags_aadnumber', 'writing', 'default'); 111 114 112 register_setting( 'writing', 'wp_aatags_opts');113 register_setting( 'writing', 'wp_aatags_aadnumber');115 register_setting('writing', 'wp_aatags_opts'); 116 register_setting('writing', 'wp_aatags_aadnumber'); 114 117 } 115 118 116 function wp_aatags_install($obj) {117 add_option('wp_aatags_opts',3);118 add_option('wp_aatags_aadnumber',3);119 function wp_aatags_install($obj) { 120 add_option('wp_aatags_opts', 3); 121 add_option('wp_aatags_aadnumber', 3); 119 122 } 120 123 121 function wp_aatags_uninstall() {122 delete_option('wp_aatags_opts');123 delete_option('wp_aatags_aadnumber');124 remove_action('admin_init','wp_aatags_admin_init');124 function wp_aatags_uninstall() { 125 delete_option('wp_aatags_opts'); 126 delete_option('wp_aatags_aadnumber'); 127 remove_action('admin_init', 'wp_aatags_admin_init'); 125 128 } 126 129 127 function wp_aatags_setting() {128 $wp_aatags_opts = get_option('wp_aatags_opts');129 ?>130 function wp_aatags_setting() { 131 $wp_aatags_opts = get_option('wp_aatags_opts'); 132 ?> 130 133 131 134 <select name="wp_aatags_opts"> 132 <option value="1" <?php selected('1', $wp_aatags_opts ); ?>><?php if(get_bloginfo('language')=='zh-CN'||get_bloginfo('language')=='zh-TW'): ?>标题+正文前333字<?php else: ?>Posts Title&Content before 333.<?php endif;?></option>133 <option value="2" <?php selected('2', $wp_aatags_opts ); ?>><?php if(get_bloginfo('language')=='zh-CN'||get_bloginfo('language')=='zh-TW'): ?>文章内容前999字<?php else: ?>Only Posts Content before 999.<?php endif;?></option>134 <option value="3" <?php selected('3', $wp_aatags_opts ); ?>><?php if(get_bloginfo('language')=='zh-CN'||get_bloginfo('language')=='zh-TW'): ?>仅匹配文章标题<?php else: ?>Only Posts Title<?php endif;?></option>135 <option value="1" <?php selected('1', $wp_aatags_opts);?>><?php if (get_bloginfo('language') == 'zh-CN' || get_bloginfo('language') == 'zh-TW'): ?>标题+正文前333字<?php else: ?>Posts Title&Content before 333.<?php endif;?></option> 136 <option value="2" <?php selected('2', $wp_aatags_opts);?>><?php if (get_bloginfo('language') == 'zh-CN' || get_bloginfo('language') == 'zh-TW'): ?>文章内容前999字<?php else: ?>Only Posts Content before 999.<?php endif;?></option> 137 <option value="3" <?php selected('3', $wp_aatags_opts);?>><?php if (get_bloginfo('language') == 'zh-CN' || get_bloginfo('language') == 'zh-TW'): ?>仅匹配文章标题<?php else: ?>Only Posts Title<?php endif;?></option> 135 138 </select> 136 139 … … 138 141 } 139 142 140 function wp_aatags_aadnumber() {141 $wp_aatags_aadnumber = get_option('wp_aatags_aadnumber');142 ?>143 function wp_aatags_aadnumber() { 144 $wp_aatags_aadnumber = get_option('wp_aatags_aadnumber'); 145 ?> 143 146 144 <p><label><input name="wp_aatags_aadnumber" type="radio" value="3" <?php checked('3', $wp_aatags_aadnumber ); ?>>3 </label><label><input name="wp_aatags_aadnumber" type="radio" value="5" <?php checked('5', $wp_aatags_aadnumber ); ?>> 5 </label><label><input name="wp_aatags_aadnumber" type="radio" value="9" <?php checked('9', $wp_aatags_aadnumber ); ?>> 9 </label><label><input name="wp_aatags_aadnumber" type="radio" value="15" <?php checked('15', $wp_aatags_aadnumber );?>> 15</label></p>147 <p><label><input name="wp_aatags_aadnumber" type="radio" value="3" <?php checked('3', $wp_aatags_aadnumber);?>>3 </label><label><input name="wp_aatags_aadnumber" type="radio" value="5" <?php checked('5', $wp_aatags_aadnumber);?>> 5 </label><label><input name="wp_aatags_aadnumber" type="radio" value="9" <?php checked('9', $wp_aatags_aadnumber);?>> 9 </label><label><input name="wp_aatags_aadnumber" type="radio" value="15" <?php checked('15', $wp_aatags_aadnumber);?>> 15</label></p> 145 148 146 149 <?php 147 150 } 148 151 149 register_activation_hook(__FILE__, 'wp_aatags_install');150 register_deactivation_hook(__FILE__, 'wp_aatags_uninstall');152 register_activation_hook(__FILE__, 'wp_aatags_install'); 153 register_deactivation_hook(__FILE__, 'wp_aatags_uninstall'); 151 154 152 add_action('admin_init', 'wp_aatags_admin_init');155 add_action('admin_init', 'wp_aatags_admin_init'); 153 156 154 add_action('publish_post','wp_aatags_run'); 155 add_action('edit_post','wp_aatags_run'); 156 157 157 add_action('publish_post', 'wp_aatags_run'); 158 add_action('edit_post', 'wp_aatags_run');
Note: See TracChangeset
for help on using the changeset viewer.