Changeset 3451449
- Timestamp:
- 02/01/2026 03:30:20 PM (2 months ago)
- Location:
- auto-clean-url-seo/trunk
- Files:
-
- 2 edited
-
auto-clean-url-seo.php (modified) (1 diff)
-
readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
auto-clean-url-seo/trunk/auto-clean-url-seo.php
r1303818 r3451449 2 2 /** 3 3 * Plugin Name: Auto Clean URL for SEO 4 * Plugin URI: http://apasionados.es5 * Description: This plugin removes STOP WORDS from the WordPress Slugs in ENGLISH, SPANISH and GERMAN. For all languages it removes HTML entities and anything that is not a letter, digit, space or apostrophe.6 * Version: 1.67 * Author: Apasionados.es8 * Author URI: http://apasionados.es9 * License: GPL24 * Plugin URI: http://apasionados.es 5 * Description: Removes stop words from WordPress slugs in EN/ES/DE/FR. For all languages it removes HTML entities and anything that is not a letter, digit, space or apostrophe. 6 * Version: 1.7.0 7 * Author: Apasionados.es 8 * Author URI: http://apasionados.es 9 * License: GPL2 10 10 * Text Domain: autocleanurlforseo 11 * Domain Path: /languages 11 12 */ 12 13 /* Copyright 2014 Apasionados.es (email: info@apasionados.es)14 13 15 This program is free software; you can redistribute it and/or modify 16 it under the terms of the GNU General Public License, version 2, as 17 published by the Free Software Foundation. 14 defined('ABSPATH') || exit; 18 15 19 This program is distributed in the hope that it will be useful, 20 but WITHOUT ANY WARRANTY; without even the implied warranty of 21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 GNU General Public License for more details. 23 24 You should have received a copy of the GNU General Public License 25 along with this program; if not, write to the Free Software 26 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 */ 28 29 $plugin_header_translate = array( __('Auto Clean URL for SEO', 'autocleanurlforseo'), __('This plugin removes STOP WORDS from the WordPress Slugs in ENGLISH, SPANISH and GERMAN. For all languages it removes HTML entities and anything that is not a letter, digit, space or apostrophe.', 'autocleanurlforseo') ); 30 31 add_action( 'admin_init', 'autocleanurlforseo_load_language' ); 32 function autocleanurlforseo_load_language() { 33 load_plugin_textdomain( 'autocleanurlforseo', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 34 } 35 add_action( 'wp_ajax_sample-permalink', 'ajax_seo_slugs',0); 36 function ajax_seo_slugs($data) { 37 $post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0; 38 $post_name = isset($_POST['new_slug'])? $_POST['new_slug'] : null; 39 $new_title = isset($_POST['new_title'])? $_POST['new_title'] : null; 40 $seo_slug = strtolower(stripslashes($new_title)); 41 $seo_slug = preg_replace('/&.+?;/', '', $seo_slug); // Kill HTML entities 42 $seo_slug_with_stopwords = $seo_slug; 43 $seo_language = strtolower( substr( get_bloginfo ( 'language' ), 0, 2 ) ); // Check the language; we only want the first two letters 44 if ( $seo_language == 'en' ) { // Check if blog language is English (en) 45 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_en()); // Turn it to an array and strip common/stop word by comparing against ENGLISH array 46 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 47 } elseif ( $seo_language == 'es' ) { // Check if blog language is Spanish (es) 48 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_es()); // Turn it to an array and strip common/stop word by comparing against SPANISH array 49 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 50 } elseif ( $seo_language == 'de' ) { // Check if blog language is German (de) 51 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_de()); // Turn it to an array and strip common/stop word by comparing against GERMAN array 52 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 53 } elseif ( $seo_language == 'fr' ) { // Check if blog language is German (de) 54 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_fr()); // Turn it to an array and strip common/stop word by comparing against GERMAN array 55 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 56 } 57 $seo_slug = preg_replace ("/[^a-zA-Z0-9 \']-/", "", $seo_slug); // Kill anything that is not a letter, digit, space or apostrophe 58 // Turn it to an array to count left words. If less than 3 words left, use original slug. 59 // $clean_slug_array = explode( '-', $seo_slug ); 60 // if ( count( $clean_slug_array ) < 3 ) { 61 // $seo_slug = $seo_slug_with_stopwords; 62 // } 63 if (empty($post_name)) { $_POST['new_slug'] = $seo_slug; } // We don't want to change an existing slug 16 /** 17 * Load translations at the correct time (fixes _load_textdomain_just_in_time notice). 18 */ 19 add_action('plugins_loaded', 'autocleanurlforseo_load_textdomain'); 20 function autocleanurlforseo_load_textdomain() { 21 load_plugin_textdomain( 22 'autocleanurlforseo', 23 false, 24 dirname(plugin_basename(__FILE__)) . '/languages/' 25 ); 64 26 } 65 27 66 add_filter('name_save_pre', 'seo_slugs', 0); 67 function seo_slugs($slug) { 68 if ($slug) return $slug; // We don't want to change an existing slug 69 global $wpdb; 70 if ( !empty($_POST['post_title']) ) { 71 $seo_slug = strtolower(stripslashes($_POST['post_title'])); 72 $seo_slug = preg_replace('/&.+?;/', '', $seo_slug); // Kill HTML entities 73 $seo_slug_with_stopwords = $seo_slug; 74 $seo_language = strtolower( substr( get_bloginfo ( 'language' ), 0, 2 ) ); // Check the language; we only want the first two letters 75 if ( $seo_language == 'en' ) { // Check if blog language is English (en) 76 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_en()); // Turn it to an array and strip common/stop word by comparing against ENGLISH array 77 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 78 } elseif ( $seo_language == 'es' ) { // Check if blog language is Spanish (es) 79 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_es()); // Turn it to an array and strip common/stop word by comparing against SPANISH array 80 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 81 } elseif ( $seo_language == 'de' ) { // Check if blog language is German (de) 82 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_de()); // Turn it to an array and strip common/stop word by comparing against GERMAN array 83 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 84 } elseif ( $seo_language == 'fr' ) { // Check if blog language is German (de) 85 $seo_slug_array = array_diff (explode(" ", $seo_slug), seo_slugs_stop_words_fr()); // Turn it to an array and strip common/stop word by comparing against GERMAN array 86 $seo_slug = join("-", $seo_slug_array); // Turn the sanitized array into a string 87 } 88 $seo_slug = preg_replace ("/[^a-zA-Z0-9 \']-/", "", $seo_slug); // Kill anything that is not a letter, digit, space or apostrophe 89 // Turn it to an array to count left words. If less than 3 words left, use original slug. 90 // $clean_slug_array = explode( '-', $seo_slug ); 91 // if ( count( $clean_slug_array ) < 3 ) { 92 // $seo_slug = $seo_slug_with_stopwords; 93 // } 94 return $seo_slug; 28 /** 29 * Adjust the editor "Permalink:" preview without touching $_POST. 30 * Filter signature: (array $permalink, int $post_id, string $title, string $name, WP_Post $post) 31 * Returns: array( $permalink, $post_name ) 32 */ 33 add_filter('get_sample_permalink', 'autocleanurlforseo_filter_sample_permalink', 10, 5); 34 function autocleanurlforseo_filter_sample_permalink($permalink, $post_id, $title, $name, $post) { 35 // Admin/editor only. 36 if (!is_admin()) { 37 return $permalink; 95 38 } 39 40 // Safety: ensure user can edit this post. 41 if ($post_id && !current_user_can('edit_post', $post_id)) { 42 return $permalink; 43 } 44 45 // Don't overwrite an existing slug. 46 if (!empty($name)) { 47 return $permalink; 48 } 49 50 $title = sanitize_text_field($title); 51 if ($title === '') { 52 return $permalink; 53 } 54 55 $clean = autocleanurlforseo_build_slug_from_title($title); 56 if ($clean === '') { 57 return $permalink; 58 } 59 60 $permalink[1] = $clean; 61 return $permalink; 96 62 } 97 63 64 /** 65 * When saving a post, if WordPress hasn't set a slug yet, generate one from the title. 66 * We still do not overwrite existing slugs. 67 */ 68 add_filter('name_save_pre', 'autocleanurlforseo_name_save_pre', 0); 69 function autocleanurlforseo_name_save_pre($slug) { 70 // Don't change an existing slug. 71 if (!empty($slug)) { 72 return $slug; 73 } 74 75 $title = isset($_POST['post_title']) ? sanitize_text_field(wp_unslash($_POST['post_title'])) : ''; 76 if ($title === '') { 77 return $slug; 78 } 79 80 return autocleanurlforseo_build_slug_from_title($title); 81 } 82 83 /** 84 * Core slug builder: language detection + stop-word removal + normalization. 85 * Returns a final, WP-safe slug. 86 */ 87 function autocleanurlforseo_build_slug_from_title($title) { 88 $seo_slug = mb_strtolower($title, 'UTF-8'); 89 90 // Remove accents early for consistency (WP will also do this inside sanitize_title()). 91 $seo_slug = remove_accents($seo_slug); 92 93 // Kill HTML entities (e.g. & etc.) 94 $seo_slug = preg_replace('/&.+?;/', ' ', $seo_slug); 95 96 // Normalize whitespace. 97 $seo_slug = preg_replace('/\s+/', ' ', trim($seo_slug)); 98 99 $seo_language = strtolower(substr(get_bloginfo('language'), 0, 2)); 100 101 $words = ($seo_slug === '') ? array() : explode(' ', $seo_slug); 102 103 switch ($seo_language) { 104 case 'en': 105 $words = array_diff($words, seo_slugs_stop_words_en()); 106 break; 107 case 'es': 108 $words = array_diff($words, seo_slugs_stop_words_es()); 109 break; 110 case 'de': 111 $words = array_diff($words, seo_slugs_stop_words_de()); 112 break; 113 case 'fr': 114 $words = array_diff($words, seo_slugs_stop_words_fr()); 115 break; 116 } 117 118 // Rebuild with hyphens. 119 $seo_slug = implode('-', $words); 120 121 /** 122 * Remove anything that isn't: 123 * - letters/digits 124 * - hyphen 125 * - apostrophe 126 * 127 * Note: keep it conservative; sanitize_title() will finalize. 128 */ 129 $seo_slug = preg_replace("/[^a-z0-9\\-']+/i", '-', $seo_slug); 130 $seo_slug = preg_replace('/-+/', '-', $seo_slug); 131 $seo_slug = trim($seo_slug, '-'); 132 133 // Let WordPress canonicalize the slug. 134 return sanitize_title($seo_slug); 135 } 136 137 /* --- STOP WORD LISTS (unchanged from original) --- */ 138 98 139 function seo_slugs_stop_words_en () { 99 return array ("a", "able", "about", "above", "abroad", "according", "accordingly", "across", "actually", "adj", "after", "afterwards", "again", "against", "ago", "ahead", "ain't", "all", "allow", "allows", "almost", "alone", "along", "alongside", "already", "also", "although", "always", "am", "amid", "amidst", "among", "amongst", "an", "and", "another", "any", "anybody", "anyhow", "anyone", "anything", "anyway", "anyways", "anywhere", "apart", "appear", "appreciate", "appropriate", "are", "aren't", "around", "as", "a's", "aside", "ask", "asking", "associated", "at", "available", "away", "awfully", "b", "back", "backward", "backwards", "be", "became", "because", "become", "becomes", "becoming", "been", "before", "beforehand", "begin", "behind", "being", "believe", "below", "beside", "besides", "best", "better", "between", "beyond", "both", "brief", "but", "by", "c", "came", "can", "cannot", "cant", "can't", "caption", "cause", "causes", "certain", "certainly", "changes", "clearly", "c'mon", "co", "co.", "com", "come", "comes", "concerning", "consequently", "consider", "considering", "contain", "containing", "contains", "corresponding", "could", "couldn't", "course", "c's", "currently", "d", "dare", "daren't", "definitely", "described", "despite", "did", "didn't", "different", "directly", "do", "does", "doesn't", "doing", "done", "don't", "down", "downwards", "during", "e", "each", "edu", "eg", "eight", "eighty", "either", "else", "elsewhere", "end", "ending", "enough", "entirely", "especially", "et", "etc", "even", "ever", "evermore", "every", "everybody", "everyone", "everything", "everywhere", "ex", "exactly", "example", "except", "f", "fairly", "far", "farther", "few", "fewer", "fifth", "first", "five", "followed", "following", "follows", "for", "forever", "former", "formerly", "forth", "forward", "found", "four", "from", "further", "furthermore", "g", "get", "gets", "getting", "given", "gives", "go", "goes", "going", "gone", "got", "gotten", "greetings", "h", "had", "hadn't", "half", "happens", "hardly", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "hello", "help", "hence", "her", "here", "hereafter", "hereby", "herein", "here's", "hereupon", "hers", "herself", "he's", "hi", "him", "himself", "his", "hither", "hopefully", "how", "howbeit", "however", "hundred", "i", "i'd", "ie", "if", "ignored", "i'll", "i'm", "immediate", "in", "inasmuch", "inc", "inc.", "indeed", "indicate", "indicated", "indicates", "inner", "inside", "insofar", "instead", "into", "inward", "is", "isn't", "it", "it'd", "it'll", "its", "it's", "itself", "i've", "j", "just", "k", "keep", "keeps", "kept", "know", "known", "knows", "l", "last", "lately", "later", "latter", "latterly", "least", "less", "lest", "let", "let's", "like", "liked", "likely", "likewise", "little", "look", "looking", "looks", "low", "lower", "ltd", "m", "made", "mainly", "make", "makes", "many", "may", "maybe", "mayn't", "me", "mean", "meantime", "meanwhile", "merely", "might", "mightn't", "mine", "minus", "miss", "more", "moreover", "most", "mostly", "mr", "mrs", "much", "must", "mustn't", "my", "myself", "n", "name", "namely", "nd", "near", "nearly", "necessary", "need", "needn't", "needs", "neither", "never", "neverf", "neverless", "nevertheless", "new", "next", "nine", "ninety", "no", "nobody", "non", "none", "nonetheless", "noone", "no-one", "nor", "normally", "not", "nothing", "notwithstanding", "novel", "now", "nowhere", "o", "obviously", "of", "off", "often", "oh", "ok", "okay", "old", "on", "once", "one", "ones", "one's", "only", "onto", "opposite", "or", "other", "others", "otherwise", "ought", "oughtn't", "our", "ours", "ourselves", "out", "outside", "over", "overall", "own", "p", "particular", "particularly", "past", "per", "perhaps", "placed", "please", "plus", "possible", "presumably", "probably", "provided", "provides", "q", "que", "quite", "qv", "r", "rather", "rd", "re", "really", "reasonably", "recent", "recently", "regarding", "regardless", "regards", "relatively", "respectively", "right", "round", "s", "said", "same", "saw", "say", "saying", "says", "second", "secondly", "see", "seeing", "seem", "seemed", "seeming", "seems", "seen", "self", "selves", "sensible", "sent", "serious", "seriously", "seven", "several", "shall", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "since", "six", "so", "some", "somebody", "someday", "somehow", "someone", "something", "sometime", "sometimes", "somewhat", "somewhere", "soon", "sorry", "specified", "specify", "specifying", "still", "sub", "such", "sup", "sure", "t", "take", "taken", "taking", "tell", "tends", "th", "than", "thank", "thanks", "thanx", "that", "that'll", "thats", "that's", "that've", "the", "their", "theirs", "them", "themselves", "then", "thence", "there", "thereafter", "thereby", "there'd", "therefore", "therein", "there'll", "there're", "theres", "there's", "thereupon", "there've", "these", "they", "they'd", "they'll", "they're", "they've", "thing", "things", "think", "third", "thirty", "this", "thorough", "thoroughly", "those", "though", "three", "through", "throughout", "thru", "thus", "till", "to", "together", "too", "took", "toward", "towards", "tried", "tries", "truly", "try", "trying", "t's", "twice", "two", "u", "un", "under", "underneath", "undoing", "unfortunately", "unless", "unlike", "unlikely", "until", "unto", "up", "upon", "upwards", "us", "use", "used", "useful", "uses", "using", "usually", "v", "value", "various", "versus", "very", "via", "viz", "vs", "w", "want", "wants", "was", "wasn't", "way", "we", "we'd", "welcome", "well", "we'll", "went", "were", "we're", "weren't", "we've", "what", "whatever", "what'll", "what's", "what've", "when", "whence", "whenever", "where", "whereafter", "whereas", "whereby", "wherein", "where's", "whereupon", "wherever", "whether", "which", "whichever", "while", "whilst", "whither", "who", "who'd", "whoever", "whole", "who'll", "whom", "whomever", "who's", "whose", "why", "will", "willing", "wish", "with", "within", "without", "wonder", "won't", "would", "wouldn't", "x", "y", "yes", "yet", "you", "you'd", "you'll", "your", "you're", "yours", "yourself", "yourselves", "you've", "z", "zero");140 return array ("a", "able", "about", "above", "abroad", "according", "accordingly", "across", "actually", "adj", "after", "afterwards", "again", "against", "ago", "ahead", "ain't", "all", "allow", "allows", "almost", "alone", "along", "alongside", "already", "also", "although", "always", "am", "amid", "amidst", "among", "amongst", "an", "and", "another", "any", "anybody", "anyhow", "anyone", "anything", "anyway", "anyways", "anywhere", "apart", "appear", "appreciate", "appropriate", "are", "aren't", "around", "as", "a's", "aside", "ask", "asking", "associated", "at", "available", "away", "awfully", "b", "back", "backward", "backwards", "be", "became", "because", "become", "becomes", "becoming", "been", "before", "beforehand", "begin", "behind", "being", "believe", "below", "beside", "besides", "best", "better", "between", "beyond", "both", "brief", "but", "by", "c", "came", "can", "cannot", "cant", "can't", "caption", "cause", "causes", "certain", "certainly", "changes", "clearly", "c'mon", "co", "co.", "com", "come", "comes", "concerning", "consequently", "consider", "considering", "contain", "containing", "contains", "corresponding", "could", "couldn't", "course", "c's", "currently", "d", "dare", "daren't", "definitely", "described", "despite", "did", "didn't", "different", "directly", "do", "does", "doesn't", "doing", "done", "don't", "down", "downwards", "during", "e", "each", "edu", "eg", "eight", "eighty", "either", "else", "elsewhere", "end", "ending", "enough", "entirely", "especially", "et", "etc", "even", "ever", "evermore", "every", "everybody", "everyone", "everything", "everywhere", "ex", "exactly", "example", "except", "f", "fairly", "far", "farther", "few", "fewer", "fifth", "first", "five", "followed", "following", "follows", "for", "forever", "former", "formerly", "forth", "forward", "found", "four", "from", "further", "furthermore", "g", "get", "gets", "getting", "given", "gives", "go", "goes", "going", "gone", "got", "gotten", "greetings", "h", "had", "hadn't", "half", "happens", "hardly", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "hello", "help", "hence", "her", "here", "hereafter", "hereby", "herein", "here's", "hereupon", "hers", "herself", "he's", "hi", "him", "himself", "his", "hither", "hopefully", "how", "howbeit", "however", "hundred", "i", "i'd", "ie", "if", "ignored", "i'll", "i'm", "immediate", "in", "inasmuch", "inc", "inc.", "indeed", "indicate", "indicated", "indicates", "inner", "inside", "insofar", "instead", "into", "inward", "is", "isn't", "it", "it'd", "it'll", "its", "it's", "itself", "i've", "j", "just", "k", "keep", "keeps", "kept", "know", "known", "knows", "l", "last", "lately", "later", "latter", "latterly", "least", "less", "lest", "let", "let's", "like", "liked", "likely", "likewise", "little", "look", "looking", "looks", "low", "lower", "ltd", "m", "made", "mainly", "make", "makes", "many", "may", "maybe", "mayn't", "me", "mean", "meantime", "meanwhile", "merely", "might", "mightn't", "mine", "minus", "miss", "more", "moreover", "most", "mostly", "mr", "mrs", "much", "must", "mustn't", "my", "myself", "n", "name", "namely", "nd", "near", "nearly", "necessary", "need", "needn't", "needs", "neither", "never", "neverf", "neverless", "nevertheless", "new", "next", "nine", "ninety", "no", "nobody", "non", "none", "nonetheless", "noone", "no-one", "nor", "normally", "not", "nothing", "notwithstanding", "novel", "now", "nowhere", "o", "obviously", "of", "off", "often", "oh", "ok", "okay", "old", "on", "once", "one", "ones", "one's", "only", "onto", "opposite", "or", "other", "others", "otherwise", "ought", "oughtn't", "our", "ours", "ourselves", "out", "outside", "over", "overall", "own", "p", "particular", "particularly", "past", "per", "perhaps", "placed", "please", "plus", "possible", "presumably", "probably", "provided", "provides", "q", "que", "quite", "qv", "r", "rather", "rd", "re", "really", "reasonably", "recent", "recently", "regarding", "regardless", "regards", "relatively", "respectively", "right", "round", "s", "said", "same", "saw", "say", "saying", "says", "second", "secondly", "see", "seeing", "seem", "seemed", "seeming", "seems", "seen", "self", "selves", "sensible", "sent", "serious", "seriously", "seven", "several", "shall", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "since", "six", "so", "some", "somebody", "someday", "somehow", "someone", "something", "sometime", "sometimes", "somewhat", "somewhere", "soon", "sorry", "specified", "specify", "specifying", "still", "sub", "such", "sup", "sure", "t", "take", "taken", "taking", "tell", "tends", "th", "than", "thank", "thanks", "thanx", "that", "that'll", "thats", "that's", "that've", "the", "their", "theirs", "them", "themselves", "then", "thence", "there", "thereafter", "thereby", "there'd", "therefore", "therein", "there'll", "there're", "theres", "there's", "thereupon", "there've", "these", "they", "they'd", "they'll", "they're", "they've", "thing", "things", "think", "third", "thirty", "this", "thorough", "thoroughly", "those", "though", "three", "through", "throughout", "thru", "thus", "till", "to", "together", "too", "took", "toward", "towards", "tried", "tries", "truly", "try", "trying", "t's", "twice", "two", "u", "un", "under", "underneath", "undoing", "unfortunately", "unless", "unlike", "unlikely", "until", "unto", "up", "upon", "upwards", "us", "use", "used", "useful", "uses", "using", "usually", "v", "value", "various", "versus", "very", "via", "viz", "vs", "w", "want", "wants", "was", "wasn't", "way", "we", "we'd", "welcome", "well", "we'll", "went", "were", "we're", "weren't", "we've", "what", "whatever", "what'll", "what's", "what've", "when", "whence", "whenever", "where", "whereafter", "whereas", "whereby", "wherein", "where's", "whereupon", "wherever", "whether", "which", "whichever", "while", "whilst", "whither", "who", "who'd", "whoever", "whole", "who'll", "whom", "whomever", "who's", "whose", "why", "will", "willing", "wish", "with", "within", "without", "wonder", "won't", "would", "wouldn't", "x", "y", "yes", "yet", "you", "you'd", "you'll", "your", "you're", "yours", "yourself", "yourselves", "you've", "z", "zero"); 100 141 } 142 101 143 function seo_slugs_stop_words_es () { 102 return array ("a", "algún", "alguna", "algunas", "alguno", "algunos", "ambos", "ampleamos", "ante", "antes", "aquel", "aquellas", "aquellos", "aqui", "arriba", "atras", "b", "bajo", "bastante", "bien", "c", "cada", "cierta", "ciertas", "ciertos", "como", "con", "conseguimos", "conseguir", "consigo", "consigue", "consiguen", "consigues", "cual", "cuando", "d", "dentro", "donde", "dos", "e", "el", "ellas", "ellos", "empleais", "emplean", "emplear", "empleas", "empleo", "en", "encima", "entonces", "entre", "era", "eramos", "eran", "eras", "eres", "es", "esta", "estaba", "estado", "estais", "estamos", "estan", "estoy", "f", "fin", "fue", "fueron", "fui", "fuimos", "g", "gueno", "h", "ha", "hace", "haceis", "hacemos", "hacen", "hacer", "haces", "hago", "i", "incluso", "intenta", "intentais", "intentamos", "intentan", "intentar", "intentas", "intento", "ir", "j", "k", "l", "la", "largo", "las", "lo", "los", "m", "mientras", "mio", "modo", "muchos", "muy", "n", "nos", "nosotros", "o", "otro", "p", "para", "pero", "podeis", "podemos", "poder", "podria", "podriais", "podriamos", "podrian", "podrias", "por qué", "por", "porque", "primero desde", "puede", "pueden", "puedo", "q", "quien", "r", "s", "sabe", "sabeis", "sabemos", "saben", "saber", "sabes", "ser", "si", "siendo", "sin", "sobre", "sois", "solamente", "solo", "somos", "soy", "su", "sus", "t", "también", "teneis", "tenemos", "tener", "tengo", "tiempo", "tiene", "tienen", "todo", "trabaja", "trabajais", "trabajamos", "trabajan", "trabajar", "trabajas", "trabajo", "tras", "tuyo", "u", "ultimo", "un", "una", "unas", "uno", "unos", "usa", "usais", "usamos", "usan", "usar", "usas", "uso", "v", "va", "vais", "valor", "vamos", "van", "vaya", "verdad", "verdadera cierto", "verdadero", "vosotras", "vosotros", "voy", "w", "x", "y", "yo", "z");144 return array ("a", "algún", "alguna", "algunas", "alguno", "algunos", "ambos", "ampleamos", "ante", "antes", "aquel", "aquellas", "aquellos", "aqui", "arriba", "atras", "b", "bajo", "bastante", "bien", "c", "cada", "cierta", "ciertas", "ciertos", "como", "con", "conseguimos", "conseguir", "consigo", "consigue", "consiguen", "consigues", "cual", "cuando", "d", "dentro", "donde", "dos", "e", "el", "ellas", "ellos", "empleais", "emplean", "emplear", "empleas", "empleo", "en", "encima", "entonces", "entre", "era", "eramos", "eran", "eras", "eres", "es", "esta", "estaba", "estado", "estais", "estamos", "estan", "estoy", "f", "fin", "fue", "fueron", "fui", "fuimos", "g", "gueno", "h", "ha", "hace", "haceis", "hacemos", "hacen", "hacer", "haces", "hago", "i", "incluso", "intenta", "intentais", "intentamos", "intentan", "intentar", "intentas", "intento", "ir", "j", "k", "l", "la", "largo", "las", "lo", "los", "m", "mientras", "mio", "modo", "muchos", "muy", "n", "nos", "nosotros", "o", "otro", "p", "para", "pero", "podeis", "podemos", "poder", "podria", "podriais", "podriamos", "podrian", "podrias", "por qué", "por", "porque", "primero desde", "puede", "pueden", "puedo", "q", "quien", "r", "s", "sabe", "sabeis", "sabemos", "saben", "saber", "sabes", "ser", "si", "siendo", "sin", "sobre", "sois", "solamente", "solo", "somos", "soy", "su", "sus", "t", "también", "teneis", "tenemos", "tener", "tengo", "tiempo", "tiene", "tienen", "todo", "trabaja", "trabajais", "trabajamos", "trabajan", "trabajar", "trabajas", "trabajo", "tras", "tuyo", "u", "ultimo", "un", "una", "unas", "uno", "unos", "usa", "usais", "usamos", "usan", "usar", "usas", "uso", "v", "va", "vais", "valor", "vamos", "van", "vaya", "verdad", "verdadera cierto", "verdadero", "vosotras", "vosotros", "voy", "w", "x", "y", "yo", "z"); 103 145 } // Stop word list from: http://www.ranks.nl/stopwords/spanish 146 104 147 function seo_slugs_stop_words_de () { 105 return array ( 106 "a", "aber", "als", "am", "an", "auch", "auf", "aus", "b", "bei", "bin", "bis", "bist", "c", "d", "da", "dadurch", "daher", "darum", "das", "daß", "dass", "dein", "deine", "dem", "den", "der", "des", "deshalb", "dessen", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "e", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "f", "für", "g", "h", "hatte", "hatten", "hattest", "hattet", "hier hinter", "i", "ich", "ihr", "ihre", "im", "in", "ist", "j", "ja", "jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "k", "kann", "kannst", "können", "könnt", "l", "m", "machen", "mein", "meine", "mit", "muß", "müssen", "mußt", "musst", "müßt", "n", "nach", "nachdem", "nein", "nicht", "nun", "o", "oder", "p", "q", "r", "s", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "t", "u", "über", "und", "unser unsere", "unter", "v", "vom", "von", "vor", "w", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "x", "y", "z", "zu", "zum", "zur"); 148 return array ("a", "aber", "als", "am", "an", "auch", "auf", "aus", "b", "bei", "bin", "bis", "bist", "c", "d", "da", "dadurch", "daher", "darum", "das", "daß", "dass", "dein", "deine", "dem", "den", "der", "des", "deshalb", "dessen", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "e", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "f", "für", "g", "h", "hatte", "hatten", "hattest", "hattet", "hier hinter", "i", "ich", "ihr", "ihre", "im", "in", "ist", "j", "ja", "jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "k", "kann", "kannst", "können", "könnt", "l", "m", "machen", "mein", "meine", "mit", "muß", "müssen", "mußt", "musst", "müßt", "n", "nach", "nachdem", "nein", "nicht", "nun", "o", "oder", "p", "q", "r", "s", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "t", "u", "über", "und", "unser unsere", "unter", "v", "vom", "von", "vor", "w", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "x", "y", "z", "zu", "zum", "zur"); 107 149 } // Stop word list from: http://www.ranks.nl/stopwords/german 150 108 151 function seo_slugs_stop_words_fr () { 109 return array ( 110 "alors", "au", "aucuns", "aussi", "autre", "avant", "avec", "avoir", "bon", "car", "ce", "cela", "ces", "ceux", "chaque", "ci", "comme", "comment", "dans", "des", "du", "dedans", "dehors", "depuis", "deux", "devrait", "doit", "donc", "dos", "droite", "début", "elle", "elles", "en", "encore", "essai", "est", "et", "eu", "fait", "faites", "fois", "font", "force", "haut", "hors", "ici", "il", "ils", "je juste", "la", "le", "les", "leur", "là", "ma", "maintenant", "mais", "mes", "mine", "moins", "mon", "mot", "même", "ni", "nommés", "notre", "nous", "nouveaux", "ou", "où", "par", "parce", "parole", "pas", "personnes", "peut", "peu", "pièce", "plupart", "pour", "pourquoi", "quand", "que", "quel", "quelle", "quelles", "quels", "qui", "sa", "sans", "ses", "seulement", "si", "sien", "son", "sont", "sous", "soyez sujet", "sur", "ta", "tandis", "tellement", "tels", "tes", "ton", "tous", "tout", "trop", "très", "tu", "valeur", "voie", "voient", "vont", "votre", "vous", "vu", "ça", "étaient", "état", "étions", "été", "être"); 152 return array ("alors", "au", "aucuns", "aussi", "autre", "avant", "avec", "avoir", "bon", "car", "ce", "cela", "ces", "ceux", "chaque", "ci", "comme", "comment", "dans", "des", "du", "dedans", "dehors", "depuis", "deux", "devrait", "doit", "donc", "dos", "droite", "début", "elle", "elles", "en", "encore", "essai", "est", "et", "eu", "fait", "faites", "fois", "font", "force", "haut", "hors", "ici", "il", "ils", "je juste", "la", "le", "les", "leur", "là", "ma", "maintenant", "mais", "mes", "mine", "moins", "mon", "mot", "même", "ni", "nommés", "notre", "nous", "nouveaux", "ou", "où", "par", "parce", "parole", "pas", "personnes", "peut", "peu", "pièce", "plupart", "pour", "pourquoi", "quand", "que", "quel", "quelle", "quelles", "quels", "qui", "sa", "sans", "ses", "seulement", "si", "sien", "son", "sont", "sous", "soyez sujet", "sur", "ta", "tandis", "tellement", "tels", "tes", "ton", "tous", "tout", "trop", "très", "tu", "valeur", "voie", "voient", "vont", "votre", "vous", "vu", "ça", "étaient", "état", "étions", "été", "être"); 111 153 } // Stop word list from: http://www.ranks.nl/stopwords/french 112 ?> -
auto-clean-url-seo/trunk/readme.txt
r1872327 r3451449 5 5 Requires at least: 3.0.1 6 6 Tested up to: 4.9 7 Stable tag: 1. 67 Stable tag: 1.7 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 88 88 == Changelog == 89 89 90 = 1.7 (01feb2026) = 91 * Solved warning translation loading was triggered too early. 92 90 93 = 1.6 = 91 94 * Solved problem with saving of menus. It seems that when you save a menu the hook "name_save_pre" is also executed. As there is no defined "post_title" an error was shown when debug is active. … … 117 120 == Upgrade Notice == 118 121 119 = 1. 5=120 * Solved problem with saving of menus.122 = 1.7 = 123 UPDATED: Solved warning translation loading was triggered too early. 121 124 122 125 == Contact ==
Note: See TracChangeset
for help on using the changeset viewer.