Plugin Directory

Changeset 1477619


Ignore:
Timestamp:
08/18/2016 08:17:52 AM (10 years ago)
Author:
smartware.cc
Message:

Version 3.4

Location:
hashtagger
Files:
10 added
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • hashtagger/trunk/hashtagger.php

    r1431296 r1477619  
    22/*
    33Plugin Name: hashtagger
    4 Plugin URI: http://smartware.cc/free-wordpress-plugins/hashtagger/
     4Plugin URI: http://petersplugins.com/free-wordpress-plugins/hashtagger/
    55Description: Tag your posts by using #hashtags
    6 Version: 3.4 DEV
    7 Author: smartware.cc, Peter's Plugins
    8 Author URI: http://smartware.cc
     6Version: 3.4
     7Author: Peter's Plugins, smartware.cc
     8Author URI: http://petersplugins.com
     9Text Domain: hashtagger
    910License: GPL2
    1011*/
    1112
    12 /*  Copyright 2015 Peter Raschendorfer (email : [email protected])
     13/*  Copyright 2016 Peter Raschendorfer (email : [email protected])
    1314
    1415    This program is free software; you can redistribute it and/or modify
     
    3233class Hashtagger {
    3334  public $plugin_name;
     35  public $plugin_slug;
    3436  public $version;
     37  public $wp_url;
     38  public $my_url;
     39  public $dc_url;
    3540  public $settings;
    3641  protected $regex_general;
     
    4247    public function __construct() {
    4348        $this->plugin_name = 'hashtagger';
    44         $this->version = '3.4 DEV';
     49    $this->plugin_slug = 'hashtagger';
     50        $this->version = '3.4';
    4551    $this->get_settings();
    4652    $this->init();
     
    4955 
    5056  private function init() {
     57   
     58    $this->wp_url = 'https://wordpress.org/plugins/' . $this->plugin_slug;
     59    $this->my_url = 'http://petersplugins.com/free-wordpress-plugins/' . $this->plugin_slug;
     60    $this->dc_url = 'http://petersplugins.com/docs/' . $this->plugin_slug;
     61   
    5162    $this->regex_general = '/(^|[\s!\.:;\?(>])#([\p{L}][\p{L}0-9_]+)(?=[^<>]*(?:<|$))/u';
    5263    $this->regex_notag = '/(^|[\s!\.:;\?(>])\+#([\p{L}][\p{L}0-9_]+)(?=[^<>]*(?:<|$))/u';
     64    if ( true === $this->settings['tags_allow_numeric'] ) {
     65      // Allow Tags to start with numbers
     66      $this->regex_general = '/(^|[\s!\.:;\?(>])#([\p{L}0-9][\p{L}0-9_]+)(?=[^<>]*(?:<|$))/u';
     67      $this->regex_notag = '/(^|[\s!\.:;\?(>])\+#([\p{L}0-9][\p{L}0-9_]+)(?=[^<>]*(?:<|$))/u';
     68    }
    5369    $this->regex_users = '/(^|[\s!\.:;\?(>])\@([\p{L}][\p{L}0-9_]+)(?=[^<>]*(?:<|$))/u';
    5470    $this->regex_cash = '/(^|[\s!\.:;\?(>])\$([A-Z][A-Z\-]+)(?=[^<>]*(?:<|$))/u';
     
    91107  // addd text domains
    92108  function add_text_domains() { 
    93     load_plugin_textdomain( 'hashtagger', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
     109    load_plugin_textdomain( 'hashtagger' );
    94110  }
    95111 
     
    116132    $this->settings['cashtagcssclass'] = get_option( 'swcc_htg_cashtagcssclass', '' );
    117133    $this->settings['display_nosymbols'] = ( get_option( 'swcc_htg_display_nosymbols', '0' ) == 0 ) ?  false : true;
     134    $this->settings['tags_allow_numeric'] = ( get_option( 'swcc_htg_tags_allow_numeric', '0' ) == 0 ) ?  false : true;
    118135    $tagbase = get_option( 'tag_base' );
    119136    if ( $tagbase != '' ) {
     
    136153        $content = $content . ' ' . get_post_field('post_excerpt', $postid);
    137154      }
    138       wp_set_post_tags( $postid, $this->get_hashtags_from_content( $content ), $this->settings['advanced_nodelete'] );
     155      wp_set_post_tags( $postid, $this->get_hashtags_from_content( strip_tags( $content ) ), $this->settings['advanced_nodelete'] );
    139156    }
    140157  }
     
    199216    // get_term_by does not work if Polylang is active, because it always returns us the tag of any language - this may be the right language or not...
    200217    // get_terms works also if Polylang is active - and it does not return the tag in all languages but only in the needed one - thats perfect, so we need no extra solition for Polylang
    201     $terms = get_terms( array( 'taxonomy' => 'post_tag', 'name' => $match[2], 'number' => 1 ) );
    202     if ( ! $terms ) {
     218    if ( $match[2] != strip_tags( $match[2] )  ) {
    203219      $content = $match[0];
    204220    } else {
    205       $term = $terms[0];
    206       $termid = $term->term_id;
    207       $slug = $term->slug;
    208       if ( $mktag ) {
    209         $css = $this->settings['cssclass'];
     221      $terms = get_terms( array( 'taxonomy' => 'post_tag', 'name' => $match[2], 'number' => 1 ) );
     222      if ( ! $terms ) {
     223        $content = $match[0];
    210224      } else {
    211         $css = $this->settings['cssclass_notag'];
    212       }
    213       if ( $css != '' ) {
    214         $css = ' class="' . $css . '"';
    215       }
    216       if ( ! $this->settings['display_nosymbols'] ) {
    217         $symbol = '#';
    218       } else {
    219         $symbol = '';
    220       }
    221       $content = $match[1] . '<a' . $css . ' href="' . get_tag_link( $termid ) . '">' . $symbol . $match[2] . '</a>';
     225        $term = $terms[0];
     226        $termid = $term->term_id;
     227        $slug = $term->slug;
     228        if ( $mktag ) {
     229          $css = $this->settings['cssclass'];
     230        } else {
     231          $css = $this->settings['cssclass_notag'];
     232        }
     233        if ( $css != '' ) {
     234          $css = ' class="' . $css . '"';
     235        }
     236        if ( ! $this->settings['display_nosymbols'] ) {
     237          $symbol = '#';
     238        } else {
     239          $symbol = '';
     240        }
     241        $content = $match[1] . '<a' . $css . ' href="' . get_tag_link( $termid ) . '">' . $symbol . $match[2] . '</a>';
     242      }
    222243    }
    223244    return $content;
     
    473494  }
    474495 
    475   // creates the options page
     496// creates the options page
    476497  function admin_page() {
    477498    $url = admin_url( 'options-general.php?page=' . $_GET['page'] . '&tab=' );
     
    480501      $current_tab = $_GET['tab'];
    481502    }
    482     if ( ! in_array( $current_tab, array('general', 'advanced', 'posttype', 'sectiontype', 'css', 'display', 'regenerate') ) ) {
     503    if ( ! in_array( $current_tab, array('general', 'tags', 'usernames', 'cashtags', 'advanced', 'posttype', 'sectiontype', 'css', 'display', 'regenerate') ) ) {
    483504      $current_tab = 'general';
    484505    }
     
    486507    <div class="wrap">
    487508      <?php screen_icon(); ?>
    488       <h2 style="min-height: 32px; line-height: 32px; padding-left: 40px; background-image: url(<?php echo plugins_url( 'pluginicon.png', __FILE__ ); ?>); background-repeat: no-repeat; background-position: left center"><a href="http://smartware.cc/free-wordpress-plugins/hashtagger/">hashtagger</a> Settings</h2>
     509      <h2 style="min-height: 32px; line-height: 32px; padding-left: 40px; background-image: url(<?php echo plugins_url( 'pluginicon.png', __FILE__ ); ?>); background-repeat: no-repeat; background-position: left center"><a href="<?php echo $this->caller->my_url; ?>"><?php echo $this->caller->plugin_name; ?></a> <?php echo __( 'Settings', 'hashtagger' ); ?></h2>
    489510      <hr />
    490       <p>Plugin Version: <?php echo $this->version; ?></p>
     511      <p>Plugin Version: <?php echo $this->version; ?> <a class="dashicons dashicons-editor-help" href="<?php echo $this->caller->wp_url; ?>/changelog/"></a></p>
    491512      <h2 class="nav-tab-wrapper">
    492         <a href="<?php echo $url . 'general'; ?>" class="nav-tab<?php if ( 'general' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'General' ); ?></a>
     513        <a href="<?php echo $url . 'general'; ?>" class="nav-tab<?php if ( 'general' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Information' ); ?></a>
     514        <a href="<?php echo $url . 'tags'; ?>" class="nav-tab<?php if ( 'tags' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Tags' ); ?></a>
     515        <a href="<?php echo $url . 'usernames'; ?>" class="nav-tab<?php if ( 'usernames' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Usernames' ); ?></a>
     516        <a href="<?php echo $url . 'cashtags'; ?>" class="nav-tab<?php if ( 'cashtags' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Cashtags' ); ?></a>
    493517        <a href="<?php echo $url . 'advanced'; ?>" class="nav-tab<?php if ( 'advanced' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Advanced' ); ?></a>
    494518        <a href="<?php echo $url . 'posttype'; ?>" class="nav-tab<?php if ( 'posttype' == $current_tab ) { echo ' nav-tab-active'; } ?>"><?php _e( 'Post Types', 'hashtagger' ); ?></a>
     
    521545              <?php } else { ?>
    522546                <form method="post" action="options.php" class="hashtagger_settings_form">
    523                   <?php if ( 'general' == $current_tab ) { ?>
    524                       <div class="postbox">
    525                         <div class="inside">
    526                           <p><strong>#hashtag <?php _e( 'Permalinks' ); ?></strong></p>
    527                           <hr />
    528                           <p>#hashtags <?php _e( 'currently link to', 'hashtagger'); ?> <code style="white-space: nowrap"><?php echo $this->tag_base_url() . '[hashtag]'; ?></code>.</p>
    529                           <p><?php printf( __( 'The <b>Tag base</b> for the Archive URL can be changed on %s page', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_general_tagbase"></a>', '<a href="'. admin_url( 'options-permalink.php' ) .'">' . __( 'Permalink Settings' ) . '</a>' ); ?>.</p>
    530                         </div>
    531                       </div>
    532                     <?php } ?>
    533                     <div class="postbox">
    534                       <div class="inside">
    535                         <?php
    536                           settings_fields( 'hashtagger_settings_' . $current_tab );   
    537                           do_settings_sections( 'hashtagger_settings_section_' . $current_tab );
    538                           submit_button();
    539                         ?>
    540                       </div>
     547                  <div class="postbox">
     548                    <div class="inside">
     549                      <?php if ( 'general' == $current_tab ) { ?>
     550                        <p><strong>#hashtag <?php _e( 'Permalinks' ); ?></strong></p>
     551                        <hr />
     552                        <p>#hashtags <?php _e( 'currently link to', 'hashtagger'); ?> <code style="white-space: nowrap"><?php echo $this->tag_base_url() . '[hashtag]'; ?></code>.</p>
     553                        <p><?php printf( __( 'The <b>Tag base</b> for the Archive URL can be changed on %s page', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_general_tagbase"></a>', '<a href="'. admin_url( 'options-permalink.php' ) .'">' . __( 'Permalink Settings' ) . '</a>' ); ?>.</p>
     554                      <?php } else {
     555                        settings_fields( 'hashtagger_settings_' . $current_tab );   
     556                        do_settings_sections( 'hashtagger_settings_section_' . $current_tab );
     557                        submit_button();
     558                      } ?>
     559                    </div>
    541560                  </div>
    542                   <?php if ( 'general' == $current_tab ) { ?>
    543                     <div class="postbox">
    544                       <div class="inside">
    545                         <?php
    546                           settings_fields( 'hashtagger_settings_general_cashtags' );   
    547                           do_settings_sections( 'hashtagger_settings_section_general_cashtags' );
    548                           submit_button();
    549                         ?>
    550                       </div>
    551                     </div>
    552                   <?php } ?>
    553561                </form>
    554562              <?php } ?>
     
    571579  function admin_init() {
    572580   
    573     add_settings_section( 'hashtagger-settings-general', '', array( $this, 'admin_section_general_title' ), 'hashtagger_settings_section_general' );
    574     register_setting( 'hashtagger_settings_general', 'swcc_htg_usernames' ) ;
    575     register_setting( 'hashtagger_settings_general', 'swcc_htg_usernamesnick' );
    576     add_settings_field( 'swcc_htg_settings_usernames', __( 'Link @usernames', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_general_usernames"></a>', array( $this, 'admin_usernames' ), 'hashtagger_settings_section_general', 'hashtagger-settings-general', array( 'label_for' => 'swcc_htg_usernames' ) );
    577     add_settings_field( 'swcc_htg_settings_usernamesnick', __( '@nicknames', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_general_nicknames"></a>', array( $this, 'admin_usernamesnick' ), 'hashtagger_settings_section_general', 'hashtagger-settings-general', array( 'label_for' => 'swcc_htg_usernamesnick' ) );
    578    
    579     add_settings_section( 'hashtagger-settings-general-cashtags', '', array( $this, 'admin_section_general_cashtag_title' ), 'hashtagger_settings_section_general_cashtags' );
    580     register_setting( 'hashtagger_settings_general_cashtags', 'swcc_htg_cashtags' ) ;
    581     add_settings_field( 'swcc_htg_settings_cashtags', __( '$cashtags', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_general_cashtags"></a>', array( $this, 'admin_cashtags' ), 'hashtagger_settings_section_general_cashtags', 'hashtagger-settings-general-cashtags', array( 'label_for' => 'swcc_htg_cashtags' ) );
     581    add_settings_section( 'hashtagger-settings-tags', '', array( $this, 'admin_section_tags_title' ), 'hashtagger_settings_section_tags' );
     582    register_setting( 'hashtagger_settings_tags', 'swcc_htg_tags_allow_numeric' ) ;
     583    add_settings_field( 'swcc_htg_settings_tags_numeric', __( 'Allow numeric', 'hashtagger') . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_tags_allow_numeric"></a>' , array( $this, 'admin_tags_allow_numeric' ), 'hashtagger_settings_section_tags', 'hashtagger-settings-tags', array( 'label_for' => 'swcc_htg_tags_allow_numeric' ) );
     584   
     585    add_settings_section( 'hashtagger-settings-usernames', '', array( $this, 'admin_section_usernames_title' ), 'hashtagger_settings_section_usernames' );
     586    register_setting( 'hashtagger_settings_usernames', 'swcc_htg_usernames' ) ;
     587    register_setting( 'hashtagger_settings_usernames', 'swcc_htg_usernamesnick' );
     588    add_settings_field( 'swcc_htg_settings_usernames', __( 'Link @usernames', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_usernames_usernames"></a>', array( $this, 'admin_usernames' ), 'hashtagger_settings_section_usernames', 'hashtagger-settings-usernames', array( 'label_for' => 'swcc_htg_usernames' ) );
     589    add_settings_field( 'swcc_htg_settings_usernamesnick', __( '@nicknames', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_usernames_nicknames"></a>', array( $this, 'admin_usernamesnick' ), 'hashtagger_settings_section_usernames', 'hashtagger-settings-usernames', array( 'label_for' => 'swcc_htg_usernamesnick' ) );   
     590   
     591    add_settings_section( 'hashtagger-settings-cashtags', '', array( $this, 'admin_section_cashtag_title' ), 'hashtagger_settings_section_cashtags' );
     592    register_setting( 'hashtagger_settings_cashtags', 'swcc_htg_cashtags' ) ;
     593    add_settings_field( 'swcc_htg_settings_cashtags', __( '$cashtags', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_cashtags"></a>', array( $this, 'admin_cashtags' ), 'hashtagger_settings_section_cashtags', 'hashtagger-settings-cashtags', array( 'label_for' => 'swcc_htg_cashtags' ) );
    582594   
    583595    add_settings_section( 'hashtagger-settings-advanced', '', array( $this, 'admin_section_advanced_title' ), 'hashtagger_settings_section_advanced' );
    584596    register_setting( 'hashtagger_settings_advanced', 'swcc_htg_advanced_nodelete' );
    585     add_settings_field( 'swcc_htg_settings_advanced_nodelete', __( 'Do not delete unused Tags', 'hashtagger') . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_advanced_nodelete"></a>' , array( $this, 'admin_advanced_nodelete' ), 'hashtagger_settings_section_advanced', 'hashtagger-settings-advanced', array( 'label_for' => 'swcc_htg_advanced_nodelete' ) );
     597    add_settings_field( 'swcc_htg_settings_advanced_nodelete', __( 'Do not delete unused Tags', 'hashtagger') . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_advanced_nodelete"></a>' , array( $this, 'admin_advanced_nodelete' ), 'hashtagger_settings_section_advanced', 'hashtagger-settings-advanced', array( 'label_for' => 'swcc_htg_advanced_nodelete' ) );
    586598   
    587599    add_settings_section( 'hashtagger-settings-posttype', '', array( $this, 'admin_section_posttype_title' ), 'hashtagger_settings_section_posttype' );
    588600    register_setting( 'hashtagger_settings_posttype', 'swcc_htg_posttype_page' );
    589601    register_setting( 'hashtagger_settings_posttype', 'swcc_htg_posttype_custom' );
    590     add_settings_field( 'swcc_htg_settings_posttype_post', __( 'Posts' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_posttypes_posts"></a>', array( $this, 'admin_posttype_post' ), 'hashtagger_settings_section_posttype', 'hashtagger-settings-posttype', array( 'label_for' => 'swcc_htg_posttype_post' ) );
    591     add_settings_field( 'swcc_htg_settings_posttype_page', __( 'Pages' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_posttypes_pages"></a>', array( $this, 'admin_posttype_page' ), 'hashtagger_settings_section_posttype', 'hashtagger-settings-posttype', array( 'label_for' => 'swcc_htg_posttype_page' ) );
    592     add_settings_field( 'swcc_htg_settings_posttype_custom', __( 'Custom Post Types', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_posttypes_custom"></a>', array( $this, 'admin_posttype_custom' ), 'hashtagger_settings_section_posttype', 'hashtagger-settings-posttype', array( 'label_for' => 'swcc_htg_posttype_custom' ) );
     602    add_settings_field( 'swcc_htg_settings_posttype_post', __( 'Posts' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_posttypes_posts"></a>', array( $this, 'admin_posttype_post' ), 'hashtagger_settings_section_posttype', 'hashtagger-settings-posttype', array( 'label_for' => 'swcc_htg_posttype_post' ) );
     603    add_settings_field( 'swcc_htg_settings_posttype_page', __( 'Pages' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_posttypes_pages"></a>', array( $this, 'admin_posttype_page' ), 'hashtagger_settings_section_posttype', 'hashtagger-settings-posttype', array( 'label_for' => 'swcc_htg_posttype_page' ) );
     604    add_settings_field( 'swcc_htg_settings_posttype_custom', __( 'Custom Post Types', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_posttypes_custom"></a>', array( $this, 'admin_posttype_custom' ), 'hashtagger_settings_section_posttype', 'hashtagger-settings-posttype', array( 'label_for' => 'swcc_htg_posttype_custom' ) );
    593605   
    594606    add_settings_section( 'hashtagger-settings-sectiontype', '', array( $this, 'admin_section_sectiontype_title' ), 'hashtagger_settings_section_sectiontype' );
    595607    register_setting( 'hashtagger_settings_sectiontype', 'swcc_htg_sectiontype_title' );
    596608    register_setting( 'hashtagger_settings_sectiontype', 'swcc_htg_sectiontype_excerpt' );
    597     add_settings_field( 'swcc_htg_sectiontype_title', __( 'Title' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_sectiontypes_title"></a>', array( $this, 'admin_sectiontype_title' ), 'hashtagger_settings_section_sectiontype', 'hashtagger-settings-sectiontype', array( 'label_for' => 'swcc_htg_sectiontype_title' ) );
    598     add_settings_field( 'swcc_htg_sectiontype_excerpt', __( 'Excerpt' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_sectiontypes_excerpt"></a>', array( $this, 'admin_sectiontype_excerpt' ), 'hashtagger_settings_section_sectiontype', 'hashtagger-settings-sectiontype', array( 'label_for' => 'swcc_htg_sectiontype_excerpt' ) );
    599     add_settings_field( 'swcc_htg_sectiontype_content', __( 'Content' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_sectiontypes_content"></a>', array( $this, 'admin_sectiontype_content' ), 'hashtagger_settings_section_sectiontype', 'hashtagger-settings-sectiontype', array( 'label_for' => 'swcc_htg_sectiontype_content' ) );
     609    add_settings_field( 'swcc_htg_sectiontype_title', __( 'Title' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_sectiontypes_title"></a>', array( $this, 'admin_sectiontype_title' ), 'hashtagger_settings_section_sectiontype', 'hashtagger-settings-sectiontype', array( 'label_for' => 'swcc_htg_sectiontype_title' ) );
     610    add_settings_field( 'swcc_htg_sectiontype_excerpt', __( 'Excerpt' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_sectiontypes_excerpt"></a>', array( $this, 'admin_sectiontype_excerpt' ), 'hashtagger_settings_section_sectiontype', 'hashtagger-settings-sectiontype', array( 'label_for' => 'swcc_htg_sectiontype_excerpt' ) );
     611    add_settings_field( 'swcc_htg_sectiontype_content', __( 'Content' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_sectiontypes_content"></a>', array( $this, 'admin_sectiontype_content' ), 'hashtagger_settings_section_sectiontype', 'hashtagger-settings-sectiontype', array( 'label_for' => 'swcc_htg_sectiontype_content' ) );
    600612   
    601613    add_settings_section( 'hashtagger-settings-css', '', array( $this, 'admin_section_css_title' ), 'hashtagger_settings_section_css' );
     
    604616    register_setting( 'hashtagger_settings_css', 'swcc_htg_usernamescssclass', array( $this, 'admin_cssclass_validate' ) );
    605617    register_setting( 'hashtagger_settings_css', 'swcc_htg_cashtagcssclass', array( $this, 'admin_cssclass_validate' ) );
    606     add_settings_field( 'swcc_htg_settings_cssclass', __( 'CSS class name(s) for #hashtags', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_css_hashtags"></a>', array( $this, 'admin_cssclass' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_cssclass' ) );
    607     add_settings_field( 'swcc_htg_settings_cssclass_notag', __( 'CSS class name(s) for +#hashtag links', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_css_hashtaglinks"></a>', array( $this, 'admin_cssclass_notag' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_cssclass_notag' ) );
    608     add_settings_field( 'swcc_htg_settings_usernamescssclass', __( 'CSS class name(s) for @usernames', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_css_usernames"></a>', array( $this, 'admin_usernamescssclass' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_usernamescssclass' ) );
    609     add_settings_field( 'swcc_htg_settings_cashtagcssclass', __( 'CSS class name(s) for $cashtags', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_css_usernames"></a>', array( $this, 'admin_cashtagcssclass' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_cashtagcssclass' ) );
     618    add_settings_field( 'swcc_htg_settings_cssclass', __( 'CSS class name(s) for #hashtags', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_css_hashtags"></a>', array( $this, 'admin_cssclass' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_cssclass' ) );
     619    add_settings_field( 'swcc_htg_settings_cssclass_notag', __( 'CSS class name(s) for +#hashtag links', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_css_hashtaglinks"></a>', array( $this, 'admin_cssclass_notag' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_cssclass_notag' ) );
     620    add_settings_field( 'swcc_htg_settings_usernamescssclass', __( 'CSS class name(s) for @usernames', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_css_usernames"></a>', array( $this, 'admin_usernamescssclass' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_usernamescssclass' ) );
     621    add_settings_field( 'swcc_htg_settings_cashtagcssclass', __( 'CSS class name(s) for $cashtags', 'hashtagger' ) . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_css_usernames"></a>', array( $this, 'admin_cashtagcssclass' ), 'hashtagger_settings_section_css', 'hashtagger-settings-css', array( 'label_for' => 'swcc_htg_cashtagcssclass' ) );
    610622   
    611623    add_settings_section( 'hashtagger-settings-display', '', array( $this, 'admin_section_display_title' ), 'hashtagger_settings_section_display' );
    612624    register_setting( 'hashtagger_settings_display', 'swcc_htg_display_nosymbols' );
    613     add_settings_field( 'swcc_htg_display_nosymbols', __( 'Remove symbols from links', 'hashtagger') . ' <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_display"></a>' , array( $this, 'admin_display_nosymbols' ), 'hashtagger_settings_section_display', 'hashtagger-settings-display', array( 'label_for' => 'swcc_htg_display_nosymbols' ) );
     625    add_settings_field( 'swcc_htg_display_nosymbols', __( 'Remove symbols from links', 'hashtagger') . ' <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_display"></a>' , array( $this, 'admin_display_nosymbols' ), 'hashtagger_settings_section_display', 'hashtagger-settings-display', array( 'label_for' => 'swcc_htg_display_nosymbols' ) );
    614626  }
    615627 
     
    618630  // *
    619631 
    620   // * General Section
    621 
    622   // echo title for general settings section
    623   function admin_section_general_title() {
     632  // * Tags Section
     633 
     634  // echo title for tags settings section
     635  function admin_section_tags_title() {
     636    echo '<p><strong>' . __( 'Tag-Syntax', 'hashtagger' ) . ':</strong></p><hr />';
     637  }
     638 
     639  // handle the settings field : allow numeric
     640  function admin_tags_allow_numeric() {
     641    echo '<input type="checkbox" name="swcc_htg_tags_allow_numeric" id="swcc_htg_tags_allow_numeric" value="1"' . ( ( $this->settings['tags_allow_numeric'] == true ) ?  'checked="checked"' : '' ) . ' /><label for="swcc_htg_tags_allow_numeric" class="check"></label>' . __( 'Enable tags starting with numbers', 'hashtagger' ) . '<br /><span class="dashicons dashicons-warning"></span><strong>' . __( 'Please note that this is not commonly used. Twitter, Instagram, YouTube, Pinterest, Google+ and other platforms do not support hashtags starting with or using only numbers.', 'hashtagger');
     642  }
     643 
     644  // * Usernames Section
     645
     646  // echo title for usernames settings section
     647  function admin_section_usernames_title() {
    624648    echo '<p><strong>' . __( 'Handling of @usernames', 'hashtagger' ) . ':</strong></p><hr />';
    625649  }
     
    638662  // handle the settings field : use nicknames instead of usernames
    639663  function admin_usernamesnick() {
    640     echo '<input type="checkbox" name="swcc_htg_usernamesnick" id="swcc_htg_usernamesnick" value="1"' . ( ( $this->settings['usernamesnick'] == true ) ?  'checked="checked"' : '' ) . ' /><label for="swcc_htg_usernamesnick" class="check"></label>' . __( 'Use @nicknames instead of @usernames', 'hashtagger' ) . '<br /><div class="dashicons dashicons-shield"></div><strong>' . __( 'Highly recommended to enhance WordPress security!', 'hashtagger') . ' <a href="http://smartware.cc/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/">' . __( 'Read more', 'hashtagger' ) . '</a>';
    641   }
    642  
    643   // echo title for general settings section
    644   function admin_section_general_cashtag_title() {
     664    echo '<input type="checkbox" name="swcc_htg_usernamesnick" id="swcc_htg_usernamesnick" value="1"' . ( ( $this->settings['usernamesnick'] == true ) ?  'checked="checked"' : '' ) . ' /><label for="swcc_htg_usernamesnick" class="check"></label>' . __( 'Use @nicknames instead of @usernames', 'hashtagger' ) . '<br /><div class="dashicons dashicons-shield"></div><strong>' . __( 'Highly recommended to enhance WordPress security!', 'hashtagger') . ' <a href="http://petersplugins.com/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/">' . __( 'Read more', 'hashtagger' ) . '</a>';
     665  }
     666 
     667  // echo title for cashtags settings section
     668  function admin_section_cashtag_title() {
    645669    echo '<p><strong>' . __( 'Handling of $cashtags', 'hashtagger' ) . ':</strong></p><hr />';
    646670  }
     
    792816        var counter = 0;
    793817        var abort = false;
    794         jQuery( '#hashtagger_ajax_area' ).html( '<p><input type="checkbox" name="hashtagger_regenerate_confirmation" id="hashtagger_regenerate_confirmation" value="ok" /><label for="hashtagger_regenerate_confirmation" class="check"></label><span id="hashtagger_regenerate_confirmation_hint"><?php _e( 'Please confirm to regenerate', 'hashtagger' ); ?> <a class="dashicons dashicons-editor-help" href="http://smartware.cc/docs/hashtagger/#settings_regeneration"></a></span></p><p><input type="button" name="sumbit_regnerate" id="sumbit_regnerate" class="button button-primary button-large" value="<?php _e( 'Process all objects', 'hashtagger' ); ?> (<?php echo count( $objects ); ?>)"  /></p>' );
     818        jQuery( '#hashtagger_ajax_area' ).html( '<p><input type="checkbox" name="hashtagger_regenerate_confirmation" id="hashtagger_regenerate_confirmation" value="ok" /><label for="hashtagger_regenerate_confirmation" class="check"></label><span id="hashtagger_regenerate_confirmation_hint"><?php _e( 'Please confirm to regenerate', 'hashtagger' ); ?> <a class="dashicons dashicons-editor-help" href="' . $this->caller->dc_url . '/#settings_regeneration"></a></span></p><p><input type="button" name="sumbit_regnerate" id="sumbit_regnerate" class="button button-primary button-large" value="<?php _e( 'Process all objects', 'hashtagger' ); ?> (<?php echo count( $objects ); ?>)"  /></p>' );
    795819        jQuery( '#sumbit_regnerate' ).click( function() {
    796820          if ( jQuery( '#hashtagger_regenerate_confirmation' ).prop( 'checked' ) ) {
     
    861885          <div class="inside">
    862886            <ul>
    863               <li><div class="dashicons dashicons-wordpress"></div>&nbsp;&nbsp;<a href="http://wordpress.org/extend/plugins/hashtagger/"><?php _e( 'Please rate the plugin', 'hashtagger' ); ?></a></li>
    864               <li><div class="dashicons dashicons-admin-home"></div>&nbsp;&nbsp;<a href="http://smartware.cc/wp-hashtagger/"><?php _e( 'Plugin homepage', 'hashtagger'); ?></a></li>
    865               <li><div class="dashicons dashicons-admin-home"></div>&nbsp;&nbsp;<a href="http://smartware.cc/"><?php _e( 'Author homepage', 'hashtagger' );?></a></li>
    866               <li><div class="dashicons dashicons-googleplus"></div>&nbsp;&nbsp;<a href="https://plus.google.com/+SmartwareCc"><?php _e( 'Authors Google+ Page', 'hashtagger' ); ?></a></li>
    867               <li><div class="dashicons dashicons-facebook-alt"></div>&nbsp;&nbsp;<a href="https://www.facebook.com/smartware.cc"><?php _e( 'Authors facebook Page', 'hashtagger' ); ?></a></li>
     887              <li><div class="dashicons dashicons-wordpress"></div>&nbsp;&nbsp;<a href="<?php echo $this->caller->wp_url; ?>/"><?php _e( 'Please rate the plugin', 'hashtagger' ); ?></a></li>
     888              <li><div class="dashicons dashicons-admin-home"></div>&nbsp;&nbsp;<a href="<?php echo $this->caller->my_url; ?>/"><?php _e( 'Plugin homepage', 'hashtagger'); ?></a></li>
     889              <li><div class="dashicons dashicons-admin-home"></div>&nbsp;&nbsp;<a href="http://petersplugins.com/"><?php _e( 'Author homepage', 'hashtagger' );?></a></li>
     890              <li><div class="dashicons dashicons-googleplus"></div>&nbsp;&nbsp;<a href="http://g.petersplugins.com"><?php _e( 'Authors Google+ Page', 'hashtagger' ); ?></a></li>
     891              <li><div class="dashicons dashicons-facebook-alt"></div>&nbsp;&nbsp;<a href="http://f.petersplugins.com"><?php _e( 'Authors facebook Page', 'hashtagger' ); ?></a></li>
    868892            </ul>
    869893          </div>
     
    873897          <div class="inside">
    874898            <ul>
    875               <li><div class="dashicons dashicons-book-alt"></div>&nbsp;&nbsp;<a href="http://smartware.cc/docs/hashtagger/">Take a look at the Plugin Doc</a></li>
    876               <li><div class="dashicons dashicons-wordpress"></div>&nbsp;&nbsp;<a href="http://wordpress.org/plugins/hashtagger/faq/"><?php _e( 'Take a look at the FAQ section', 'hashtagger' ); ?></a></li>
    877               <li><div class="dashicons dashicons-wordpress"></div>&nbsp;&nbsp;<a href="http://wordpress.org/support/plugin/hashtagger"><?php _e( 'Take a look at the Support section', 'hashtagger'); ?></a></li>
    878               <li><div class="dashicons dashicons-admin-comments"></div>&nbsp;&nbsp;<a href="http://smartware.cc/contact/"><?php _e( 'Feel free to contact the Author', 'hashtagger' ); ?></a></li>
     899              <li><div class="dashicons dashicons-book-alt"></div>&nbsp;&nbsp;<a href="<?php echo $this->caller->dc_url; ?>"><?php _e( 'Take a look at the Plugin Doc', 'hashtagger' ); ?></a></li>
     900              <li><div class="dashicons dashicons-wordpress"></div>&nbsp;&nbsp;<a href="<?php echo $this->caller->wp_url; ?>/faq/"><?php _e( 'Take a look at the FAQ section', 'hashtagger' ); ?></a></li>
     901              <li><div class="dashicons dashicons-wordpress"></div>&nbsp;&nbsp;<a href="http://wordpress.org/support/plugin/<?php echo $this->caller->plugin_slug; ?>/"><?php _e( 'Take a look at the Support section', 'hashtagger'); ?></a></li>
     902              <li><div class="dashicons dashicons-admin-comments"></div>&nbsp;&nbsp;<a href="http://petersplugins.com/contact/"><?php _e( 'Feel free to contact the Author', 'hashtagger' ); ?></a></li>
    879903            </ul>
     904          </div>
     905        </div>
     906        <div class="postbox">
     907          <h3><span><?php _e( 'Translate this Plugin', 'hashtagger' ); ?></span></h3>
     908          <div class="inside">
     909            <p><?php _e( 'It would be great if you\'d support the hashtagger Plugin by adding a new translation or keeping an existing one up to date!', 'hashtagger' ); ?></p>
     910            <p><a href="https://translate.wordpress.org/projects/wp-plugins/<?php echo $this->caller->plugin_slug; ?>"><?php _e( 'Translate online', 'hashtagger' ); ?></a></p>
    880911          </div>
    881912        </div>
  • hashtagger/trunk/readme.txt

    r1314413 r1477619  
    11=== hashtagger ===
    2 Contributors: smartware.cc, petersplugins
    3 Donate link:http://smartware.cc/make-a-donation/
     2Contributors: petersplugins, smartware.cc
     3Donate link:http://petersplugins.com/make-a-donation/
    44Tags: hashtag, hashtags, tag, tags, tag archive, archive, social, twitter, facebook
    55Requires at least: 3.0
    6 Tested up to: 4.4
    7 Stable tag: 3.3
     6Tested up to: 4.6
     7Stable tag: 3.4
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    1515> Use #hashtags and @usernames in your posts.
    1616
    17 **See also [Plugin Homepage](http://smartware.cc/free-wordpress-plugins/hashtagger/) and [Plugin Doc](http://smartware.cc/docs/hashtagger/)**
     17**See also [Plugin Homepage](http://petersplugins.com/free-wordpress-plugins/hashtagger/) and [Plugin Doc](http://petersplugins.com/docs/hashtagger/)**
    1818
    1919https://www.youtube.com/watch?v=cNNn1VLz4zs
    2020
    21 = New in Version 3.3 =
    22 
    23 **hashtagger 3.3 introduces cashtags and allows to remove symbols from links** ([Read more](http://smartware.cc/blog/2015/12/22/hashtagger-intoduces-cashtags-and-more-changes/))
     21= New in Version 3.4 =
     22
     23hashtagger now supports usage of the same hashtag in different languages in combination wit Polylang.
    2424
    2525= #hashtags =
     
    3535The usage of @usernames can be activated optionally. @usernames can link either to the Users Profile Page or to the Users Website. If the username does not exist the text remains unchanged and no link is created.
    3636
    37 Optionally @nicknames can be used instead of @usernames. This is **recommended to enhance security** ([read more](http://smartware.cc/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/)). Although using @nicknames is the better option, the default is @usernames for compatibility to Plugin versions prior 2.1.
     37Optionally @nicknames can be used instead of @usernames. This is **recommended to enhance security** ([read more](http://petersplugins.com/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/)). Although using @nicknames is the better option, the default is @usernames for compatibility to Plugin versions prior 2.1.
    3838
    3939= $cashtags =
     
    6363= WordPress Security =
    6464
    65 **It is highly recommended to use @nicknames instead of @usernames!** Please read [this article](http://smartware.cc/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/)!
     65**It is highly recommended to use @nicknames instead of @usernames!** Please read [this article](http://petersplugins.com/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/)!
    6666
    6767= Post Types and Section Types =
     
    8484`<?php echo do_hashtagger( get_post_meta( get_the_ID(), 'mycustomfield', true ) ); ?>`
    8585
    86 = Languages =
    87 
    88 * English
    89 * German
    90 * Spanish (thanks to [Andrew](http://www.webhostinghub.com))
    91 
    92 **Translators welcome!** Please use [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/hashtagger) to translate.
     86= Translations =
     87
     88As of version 3.4 the hashatgger Plugin uses GlotPress - the wordpress.org Translation System - for translations. Translations can be submitted at [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/hashtagger).
     89
     90**Translation are highly appreciated**. It would be great if you'd support the hashtagger Plugin by adding a new translation or keeping an existing one up to date. If you're new to GlotPress take a look at the [Translator Handbook](https://make.wordpress.org/polyglots/handbook/tools/glotpress-translate-wordpress-org/).
    9391
    9492= Do you like the hashtagger Plugin? =
    9593
    96 Thanks, I appreciate that. You don’t need to make a donation. No money, no beer, no coffee. Please, just [tell the world that you like what I’m doing](http://smartware.cc/make-a-donation/)! And that’s all.
    97 
    98 = More plugins from smartware.cc =
    99 
    100 * **[404page](https://wordpress.org/plugins/404page/)** Define any of your WordPress pages as 404 error page
    101 * **[link-log](https://wordpress.org/plugins/link-log/)** - Find out where your visitors leave to. Track clicks on external links.
     94Thanks, I appreciate that. You don’t need to make a donation. No money, no beer, no coffee. Please, just [tell the world that you like what I’m doing](http://petersplugins.com/make-a-donation/)! And that’s all.
     95
     96= More plugins from Peter =
     97
     98* **[404page](https://wordpress.org/plugins/404page/)** - Define any of your WordPress pages as 404 error page
    10299* **[smart Archive Page Remove](https://wordpress.org/plugins/smart-archive-page-remove/)** - Completely remove unwated Archive Pages from your Blog
    103100* **[smart User Slug Hider](https://wordpress.org/plugins/smart-user-slug-hider/)** - Hide usernames in author pages URLs to enhance security
    104 * **[JavaScript AutoLoader](https://wordpress.org/plugins/javascript-autoloader/)** - Load JavaScript files without changing files in the theme directory or installing several plugins to add all the desired functionality
     101* [See all](https://profiles.wordpress.org/petersplugins/#content-plugins)
    105102
    106103== Installation ==
     
    122119= What characters can a hashtag include? =
    123120
    124 The hashtag detection follows the rules for hashtags on Twitter, Facebook and Google+. The minimum length for a hashtag is 2 characters. A hashtag must not start with a number. A hashtag not only ends at a space but also at punctuation marks and other special characters. A hashtag may contain underscores.
     121The hashtag detection follows the rules for hashtags on Twitter, Facebook and Google+. The minimum length for a hashtag is 2 characters. A hashtag must not start with a number (this can be changed optionally). A hashtag not only ends at a space but also at punctuation marks and other special characters. A hashtag may contain underscores.
    125122
    126123= Does this also work for pages? =
     
    140137= Why should I use @nicknames instead of @usernames =
    141138
    142 This is important to enhance WordPress security. Please read [this article](http://smartware.cc/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/).
     139This is important to enhance WordPress security. Please read [this article](http://petersplugins.com/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames).
    143140
    144141= Can I use #hashtags and/or @usernames in Excerpts? =
     
    156153== Screenshots ==
    157154
    158 1. hashtagger Settings General Section: This section shows the current Tag base setting and the handling of @usernames respectively @nicknames can be changed here
    159 2. hashtagger Settings Advanced Section: As of version 3.0 it is possible to not delete tags that are not found in content – may be useful if already a lot of posts with tags exist - but please note that with this setting activated tags will not be removed if you delete a hashtag
    160 3. hashtagger Settings Post Types Section: In this section the Post Types to handle can be defined - activate only the Post Types for which you want to use hashtags to make sure posts are nor processed unnecessarily for better performance
    161 4. hashtagger Settings Section Types Section: In this section the Section Types to handle can be defined - only activate the Section Types you want to use for best performance
    162 5. hashtagger Settings CSS Style Section: Add CSS Classes to use for the generated links in Front End
    163 6. hashtagger Settings Display Section: Option to not display symbols in front of generated links in Front End
    164 7. hashtagger Settings Regenerate Section: Regenerate all existing Objects with the current settings
     1551. hashtagger Settings General Section: This section shows the current Tag base setting
     1562. hashtagger Settings Tags Section: Option to allow hashtags starting with numbers
     1573. hashtagger Settings Usernames Section: Handling of @usernames respectively @nicknames can be changed here
     1584. hashtagger Settings Cashtags Section: Handling of $cashtags can be changed here
     1595. hashtagger Settings Advanced Section: Option to not delete tags that are not found in content – may be useful if already a lot of posts with tags exist - but please note that with this setting activated tags will not be removed if you delete a hashtag
     1606. hashtagger Settings Post Types Section: In this section the Post Types to handle can be defined - activate only the Post Types for which you want to use hashtags to make sure posts are nor processed unnecessarily for better performance
     1617. hashtagger Settings Section Types Section: In this section the Section Types to handle can be defined - only activate the Section Types you want to use for best performance
     1628. hashtagger Settings CSS Style Section: Add CSS Classes to use for the generated links in Front End
     1639. hashtagger Settings Display Section: Option to not display symbols in front of generated links in Front End
     16410. hashtagger Settings Regenerate Section: Regenerate all existing Objects with the current settings
    165165
    166166== Changelog ==
     167
     168= 3.4 (2016-08-18) =
     169* Enhanced Polylang support to allow same hashtag in several languages
     170* Option to allow hashtags starting with numbers
    167171
    168172= 3.3 (2015-12-22) =
     
    183187
    184188= 2.1 (2014-10-10) =
    185 * Optionally use @nicknames instead of @usernames (**important** - [read more](http://smartware.cc/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/) - thanks to [joeymalek](https://profiles.wordpress.org/joeymalek/) for pointing out)
     189* Optionally use @nicknames instead of @usernames (**important** - [read more](http://petersplugins.com/wp-hashtagger/hashtagger-plugin-why-you-should-use-nicknames-instead-of-usernames/) - thanks to [joeymalek](https://profiles.wordpress.org/joeymalek/) for pointing out)
    186190* Added `do_hashtagger()` Theme Function (thanks to [joinfof](https://profiles.wordpress.org/joinfof/) for the idea)
    187191
     
    208212== Upgrade Notice ==
    209213
     214= 3.4 =
     215* Enhanced Polylang support to allow same hashtag in several languages, option to allow hashtags starting with numbers
     216
    210217= 3.3 =
    211218Version 3.3 introduces $cashtag feature
Note: See TracChangeset for help on using the changeset viewer.