Editor: word count: exclude shortcodes
Props desaiuditd, adamsilverstein, azaozz and iseulde. Fixes #27386. See #30966. git-svn-id: https://develop.svn.wordpress.org/trunk@33299 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
03653fa600
commit
c2c5c5ac27
@ -1,6 +1,7 @@
|
|||||||
( function() {
|
( function() {
|
||||||
function WordCounter( settings ) {
|
function WordCounter( settings ) {
|
||||||
var key;
|
var key,
|
||||||
|
shortcodes;
|
||||||
|
|
||||||
if ( settings ) {
|
if ( settings ) {
|
||||||
for ( key in settings ) {
|
for ( key in settings ) {
|
||||||
@ -9,6 +10,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shortcodes = this.settings.l10n.shortcodes;
|
||||||
|
|
||||||
|
if ( shortcodes && shortcodes.length ) {
|
||||||
|
this.settings.shortcodesRegExp = new RegExp( '\\[\\/?(?:' + shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'gi' );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WordCounter.prototype.settings = {
|
WordCounter.prototype.settings = {
|
||||||
@ -65,6 +72,11 @@
|
|||||||
text = text + '\n';
|
text = text + '\n';
|
||||||
|
|
||||||
text = text.replace( this.settings.HTMLRegExp, '\n' );
|
text = text.replace( this.settings.HTMLRegExp, '\n' );
|
||||||
|
|
||||||
|
if ( this.settings.shortcodesRegExp ) {
|
||||||
|
text = text.replace( this.settings.shortcodesRegExp, '\n' );
|
||||||
|
}
|
||||||
|
|
||||||
text = text.replace( this.settings.spaceRegExp, ' ' );
|
text = text.replace( this.settings.spaceRegExp, ' ' );
|
||||||
|
|
||||||
if ( type === 'words' ) {
|
if ( type === 'words' ) {
|
||||||
|
@ -400,7 +400,8 @@ function wp_default_scripts( &$scripts ) {
|
|||||||
/* translators: If your word count is based on single characters (East Asian characters),
|
/* translators: If your word count is based on single characters (East Asian characters),
|
||||||
enter 'characters', or 'all' to include spaces. Otherwise, enter 'words'.
|
enter 'characters', or 'all' to include spaces. Otherwise, enter 'words'.
|
||||||
Do not translate into your own language. */
|
Do not translate into your own language. */
|
||||||
'type' => _x( 'words', 'word count: words, characters or all?' )
|
'type' => _x( 'words', 'word count: words, characters or all?' ),
|
||||||
|
'shortcodes' => ! empty( $GLOBALS['shortcode_tags'] ) ? array_keys( $GLOBALS['shortcode_tags'] ) : array()
|
||||||
) );
|
) );
|
||||||
|
|
||||||
$scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox', 'shortcode' ), false, 1 );
|
$scripts->add( 'media-upload', "/wp-admin/js/media-upload$suffix.js", array( 'thickbox', 'shortcode' ), false, 1 );
|
||||||
|
@ -44,6 +44,13 @@
|
|||||||
words: 3,
|
words: 3,
|
||||||
characters: 14,
|
characters: 14,
|
||||||
all: 14
|
all: 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
message: 'Shortcodes.',
|
||||||
|
string: 'one [shortcode attribute="value"]two[/shortcode]three',
|
||||||
|
words: 3,
|
||||||
|
characters: 11,
|
||||||
|
all: 12
|
||||||
}
|
}
|
||||||
], function( test ) {
|
], function( test ) {
|
||||||
_.each( [ 'words', 'characters', 'all' ], function( type ) {
|
_.each( [ 'words', 'characters', 'all' ], function( type ) {
|
||||||
@ -51,4 +58,8 @@
|
|||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
} )( window.QUnit, new window.wp.utils.WordCounter() );
|
} )( window.QUnit, new window.wp.utils.WordCounter( {
|
||||||
|
l10n: {
|
||||||
|
shortcodes: [ 'shortcode' ]
|
||||||
|
}
|
||||||
|
} ) );
|
||||||
|
Loading…
Reference in New Issue
Block a user