Plugin Directory

Changeset 2071539


Ignore:
Timestamp:
04/19/2019 08:17:04 PM (7 years ago)
Author:
yzhs
Message:

Tested up to 5.1.1

Location:
wp-autotags/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wp-autotags/trunk/readme.txt

    r1905335 r2071539  
    11=== WP AutoTags ===
    22Contributors: 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 AutoTags
    4 Donate link: http://www.9sep.org/
     3Tags: 自动标签, 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
     4Donate link: https://www.9sep.org/
    55Author URI: https://www.9sep.org/author/zhys
    6 Plugin URI: http://www.9sep.org/wp-auto-tags
    7 Stable tag: 0.1.11
     6Plugin URI: https://www.9sep.org/wp-auto-tags
     7Stable tag: 0.1.12
    88Requires at least: 3.5.1
    9 Tested up to: 4.9.6
     9Tested up to: 5.1.1
    1010License: GPLv2 or later
    1111License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    3737
    3838== Changelog ==
     392019-04-20 v0.1.12 Fix des,Tested up to 5.1.1
    39402018-07-06 v0.1.11 Fix Remove the digital label ,Add simple preview
    40412016-02-28 v0.1.7 Fix inclusion of special characters  THX@Mark :)
  • wp-autotags/trunk/wp-autotags.php

    r1905335 r2071539  
    22/*
    33Plugin 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.11
     4Description:英文: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.
     5Version: 0.1.12
    66Author: Zhys
    77Author URI: https://www.9sep.org/author/zhys
    8 Plugin URI: http://www.9sep.org/wp-auto-tags
     8Plugin URI: https://www.9sep.org/wp-auto-tags
    99License: GPLv2
    10 */
     10 */
    1111
    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);'", "'&szlig;'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);
     12function 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);'", "'&szlig;'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);
    1616}
    1717
    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;
     18function 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;
    3131}
    3232
    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     }
     33function 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    }
    4040}
    4141
    42 function wp_aatags_kwsiconv($kws){
    43     return wp_aatags_sanitize(@json_decode($kws,true)['kws']);
     42function wp_aatags_kwsiconv($kws) {
     43    return wp_aatags_sanitize(@json_decode($kws, true)['kws']);
    4444}
    4545
    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     }
     46function 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    }
    7174}
    7275
    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     }
     76function 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    }
    99102}
    100103
    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');
     104function 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');
    111114
    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');
    114117}
    115118
    116 function wp_aatags_install($obj){
    117     add_option('wp_aatags_opts',3);
    118     add_option('wp_aatags_aadnumber',3);
     119function wp_aatags_install($obj) {
     120    add_option('wp_aatags_opts', 3);
     121    add_option('wp_aatags_aadnumber', 3);
    119122}
    120123
    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');
     124function wp_aatags_uninstall() {
     125    delete_option('wp_aatags_opts');
     126    delete_option('wp_aatags_aadnumber');
     127    remove_action('admin_init', 'wp_aatags_admin_init');
    125128}
    126129
    127 function wp_aatags_setting(){
    128     $wp_aatags_opts = get_option('wp_aatags_opts');
    129 ?>
     130function wp_aatags_setting() {
     131    $wp_aatags_opts = get_option('wp_aatags_opts');
     132    ?>
    130133
    131134<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>
    135138</select>
    136139
     
    138141}
    139142
    140 function wp_aatags_aadnumber(){
    141     $wp_aatags_aadnumber = get_option('wp_aatags_aadnumber');
    142 ?>
     143function wp_aatags_aadnumber() {
     144    $wp_aatags_aadnumber = get_option('wp_aatags_aadnumber');
     145    ?>
    143146
    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>
    145148
    146149<?php
    147150}
    148151
    149 register_activation_hook(__FILE__,'wp_aatags_install');
    150 register_deactivation_hook(__FILE__,'wp_aatags_uninstall');
     152register_activation_hook(__FILE__, 'wp_aatags_install');
     153register_deactivation_hook(__FILE__, 'wp_aatags_uninstall');
    151154
    152 add_action('admin_init','wp_aatags_admin_init');
     155add_action('admin_init', 'wp_aatags_admin_init');
    153156
    154 add_action('publish_post','wp_aatags_run');
    155 add_action('edit_post','wp_aatags_run');
    156 
    157 
     157add_action('publish_post', 'wp_aatags_run');
     158add_action('edit_post', 'wp_aatags_run');
Note: See TracChangeset for help on using the changeset viewer.