Version Description
- Fixed a conflict with the "AMP Stories" plugin. This fix may also help with current or future conflicts with other plugins that remove the default post filters.
Download this release
Release Info
| Developer | whiteshadow |
| Plugin | |
| Version | 1.6.1 |
| Comparing to | |
| See all releases | |
Code changes from version 1.6 to 1.6.1
- include/formatting-override.php +116 -7
- raw_html.php +1 -1
- readme.txt +4 -1
include/formatting-override.php
CHANGED
|
@@ -39,7 +39,7 @@ function maybe_convert_smilies($content){
|
|
| 39 |
}
|
| 40 |
|
| 41 |
// Disable default filters and add our conditional filters
|
| 42 |
-
function rawhtml_add_conditional_filters(){
|
| 43 |
static $filters_added = false;
|
| 44 |
static $filters = array(
|
| 45 |
'the_content' => array(
|
|
@@ -60,24 +60,135 @@ function rawhtml_add_conditional_filters(){
|
|
| 60 |
// This way there's less of a chance that Raw HTML will accidentally apply a filter
|
| 61 |
// that another plugin has removed (e.g. via "remove_filter('the_content', 'wpautop')").
|
| 62 |
if ( $filters_added || !isset($filters[current_filter()]) ) {
|
| 63 |
-
return;
|
| 64 |
}
|
| 65 |
|
| 66 |
foreach ( $filters as $tag => $functions ){
|
| 67 |
foreach ( $functions as $func => $priority ){
|
| 68 |
if ( remove_filter($tag, $func, $priority) ){
|
| 69 |
-
add_filter( $tag, 'maybe_'.$func, $priority
|
| 70 |
};
|
| 71 |
}
|
| 72 |
}
|
| 73 |
|
| 74 |
$filters_added = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
}
|
| 76 |
|
| 77 |
// Performance optimization: Start watching for content filters only after everything has
|
| 78 |
// been loaded and parsed. Running on every hook before that would be a waste.
|
| 79 |
function rawhtml_add_filter_initializer() {
|
| 80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
}
|
| 82 |
add_action('parse_query', 'rawhtml_add_filter_initializer', 1000, 0);
|
| 83 |
|
|
@@ -328,6 +439,7 @@ function rawhtml_default_settings_panel(){
|
|
| 328 |
$output = '<div class="metabox-prefs">';
|
| 329 |
foreach($fields as $field => $legend){
|
| 330 |
$esc_field = esc_attr($field);
|
|
|
|
| 331 |
$output .= sprintf(
|
| 332 |
'<label for="rawhtml_default-%s" style="line-height: 20px;">
|
| 333 |
<input type="checkbox" name="rawhtml_default-%s" id="rawhtml_default-%s" %s>
|
|
@@ -367,6 +479,3 @@ function rawhtml_save_new_defaults($params){
|
|
| 367 |
//Store the new defaults
|
| 368 |
rawhtml_set_default_settings($defaults);
|
| 369 |
}
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
?>
|
| 39 |
}
|
| 40 |
|
| 41 |
// Disable default filters and add our conditional filters
|
| 42 |
+
function rawhtml_add_conditional_filters($param = null){
|
| 43 |
static $filters_added = false;
|
| 44 |
static $filters = array(
|
| 45 |
'the_content' => array(
|
| 60 |
// This way there's less of a chance that Raw HTML will accidentally apply a filter
|
| 61 |
// that another plugin has removed (e.g. via "remove_filter('the_content', 'wpautop')").
|
| 62 |
if ( $filters_added || !isset($filters[current_filter()]) ) {
|
| 63 |
+
return $param;
|
| 64 |
}
|
| 65 |
|
| 66 |
foreach ( $filters as $tag => $functions ){
|
| 67 |
foreach ( $functions as $func => $priority ){
|
| 68 |
if ( remove_filter($tag, $func, $priority) ){
|
| 69 |
+
add_filter( $tag, 'maybe_'.$func, $priority );
|
| 70 |
};
|
| 71 |
}
|
| 72 |
}
|
| 73 |
|
| 74 |
$filters_added = true;
|
| 75 |
+
return $param;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
class wsRawHtmlWrappedFilter {
|
| 79 |
+
/**
|
| 80 |
+
* @var string
|
| 81 |
+
*/
|
| 82 |
+
private $callback;
|
| 83 |
+
|
| 84 |
+
public function __construct($callback) {
|
| 85 |
+
$this->callback = $callback;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
/**
|
| 89 |
+
* Apply $callback to $content unless it's been disabled for the current post.
|
| 90 |
+
*
|
| 91 |
+
* @param string $content
|
| 92 |
+
* @return string
|
| 93 |
+
*/
|
| 94 |
+
public function maybe_apply($content) {
|
| 95 |
+
$func = $this->callback;
|
| 96 |
+
|
| 97 |
+
global $post;
|
| 98 |
+
if ( !isset($post, $post->ID) ) {
|
| 99 |
+
return $func($content);
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
$settings = rawhtml_get_post_settings($post->ID);
|
| 103 |
+
if ( $settings['disable_' . $func] ) {
|
| 104 |
+
return $content;
|
| 105 |
+
} else {
|
| 106 |
+
return $func($content);
|
| 107 |
+
}
|
| 108 |
+
}
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
class wsRawHtmlFilterInterceptor {
|
| 112 |
+
private $filters = array(
|
| 113 |
+
'the_content' => array(
|
| 114 |
+
'wpautop' => 10,
|
| 115 |
+
'wptexturize' => 10,
|
| 116 |
+
'convert_chars' => 10,
|
| 117 |
+
'convert_smilies' => 20,
|
| 118 |
+
),
|
| 119 |
+
'the_excerpt' => array(
|
| 120 |
+
'wpautop' => 10,
|
| 121 |
+
'wptexturize' => 10,
|
| 122 |
+
'convert_chars' => 10,
|
| 123 |
+
'convert_smilies' => 20,
|
| 124 |
+
),
|
| 125 |
+
);
|
| 126 |
+
|
| 127 |
+
private $wrapped_handlers = array();
|
| 128 |
+
|
| 129 |
+
public function __construct() {
|
| 130 |
+
// Since WP 4.7.0 it's possible to add/remove callbacks to the current filter or action.
|
| 131 |
+
// This means we can add the conditional filters right before the default filters would run,
|
| 132 |
+
// which improves our ability to detect if any of the default filters have been removed
|
| 133 |
+
// by someone else. For example, do_blocks() removes wpautop() in the_content (priority: 9).
|
| 134 |
+
foreach($this->filters as $tag => $functions) {
|
| 135 |
+
add_filter($tag, array($this, 'wrap_filters'), 9, 1);
|
| 136 |
+
}
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
public function wrap_filters($content = '') {
|
| 140 |
+
$tag = current_filter();
|
| 141 |
+
if ( !isset($this->filters[$tag]) ) {
|
| 142 |
+
return $content;
|
| 143 |
+
}
|
| 144 |
+
|
| 145 |
+
//Find any filters that still need to be wrapped.
|
| 146 |
+
global $wp_filter;
|
| 147 |
+
foreach($this->filters[$tag] as $callback => $priority) {
|
| 148 |
+
if ( !isset($wp_filter[$tag][$priority][$callback]['function']) ) {
|
| 149 |
+
continue;
|
| 150 |
+
}
|
| 151 |
+
|
| 152 |
+
$current_callback = $wp_filter[$tag][$priority][$callback]['function'];
|
| 153 |
+
if ( is_string($current_callback) && ($current_callback === $callback) ) {
|
| 154 |
+
// Wrap the default callback in a conditional handler.
|
| 155 |
+
$handler = $this->get_handler($callback);
|
| 156 |
+
|
| 157 |
+
// We must update the whole list of callbacks instead of just the 'function'
|
| 158 |
+
// member of a specific callback because $wp_filter[tag] is not a real array
|
| 159 |
+
// but a class that implements ArrayAccess (update happens via offsetSet).
|
| 160 |
+
$callback_list = $wp_filter[$tag][$priority];
|
| 161 |
+
$callback_list[$callback]['function'] = array($handler, 'maybe_apply');
|
| 162 |
+
$wp_filter[$tag][$priority] = $callback_list;
|
| 163 |
+
}
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
return $content;
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
/**
|
| 170 |
+
* @param string $callback
|
| 171 |
+
* @return wsRawHtmlWrappedFilter
|
| 172 |
+
*/
|
| 173 |
+
private function get_handler($callback) {
|
| 174 |
+
if ( !isset($this->wrapped_handlers[$callback]) ) {
|
| 175 |
+
$this->wrapped_handlers[$callback] = new wsRawHtmlWrappedFilter($callback);
|
| 176 |
+
}
|
| 177 |
+
return $this->wrapped_handlers[$callback];
|
| 178 |
+
}
|
| 179 |
}
|
| 180 |
|
| 181 |
// Performance optimization: Start watching for content filters only after everything has
|
| 182 |
// been loaded and parsed. Running on every hook before that would be a waste.
|
| 183 |
function rawhtml_add_filter_initializer() {
|
| 184 |
+
if ( class_exists('WP_Hook', false) ) {
|
| 185 |
+
global $wsh_raw_interceptor;
|
| 186 |
+
if ( !isset($wsh_raw_interceptor) ) {
|
| 187 |
+
$wsh_raw_interceptor = new wsRawHtmlFilterInterceptor();
|
| 188 |
+
}
|
| 189 |
+
} else {
|
| 190 |
+
add_action('all', 'rawhtml_add_conditional_filters');
|
| 191 |
+
}
|
| 192 |
}
|
| 193 |
add_action('parse_query', 'rawhtml_add_filter_initializer', 1000, 0);
|
| 194 |
|
| 439 |
$output = '<div class="metabox-prefs">';
|
| 440 |
foreach($fields as $field => $legend){
|
| 441 |
$esc_field = esc_attr($field);
|
| 442 |
+
/** @noinspection HtmlUnknownAttribute */
|
| 443 |
$output .= sprintf(
|
| 444 |
'<label for="rawhtml_default-%s" style="line-height: 20px;">
|
| 445 |
<input type="checkbox" name="rawhtml_default-%s" id="rawhtml_default-%s" %s>
|
| 479 |
//Store the new defaults
|
| 480 |
rawhtml_set_default_settings($defaults);
|
| 481 |
}
|
|
|
|
|
|
|
|
|
raw_html.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Plugin Name: Raw HTML
|
| 4 |
Plugin URI: http://w-shadow.com/blog/2007/12/13/raw-html-in-wordpress/
|
| 5 |
Description: Lets you enter any HTML/JS/CSS in your posts without WP changing it, as well as disable automatic formatting on a per-post basis. <strong>Usage:</strong> Wrap your code in [raw]...[/raw] tags. To avoid problems, only edit posts that contain raw code in HTML mode. <strong><a href="http://rawhtmlpro.com/?utm_source=RawHTML%20free&utm_medium=plugin_description&utm_campaign=Plugins">Upgrade to Pro</a></strong> to be able to use Visual editor on the same posts without it messing up the code.
|
| 6 |
-
Version: 1.6
|
| 7 |
Author: Janis Elsts
|
| 8 |
Author URI: http://w-shadow.com/
|
| 9 |
*/
|
| 3 |
Plugin Name: Raw HTML
|
| 4 |
Plugin URI: http://w-shadow.com/blog/2007/12/13/raw-html-in-wordpress/
|
| 5 |
Description: Lets you enter any HTML/JS/CSS in your posts without WP changing it, as well as disable automatic formatting on a per-post basis. <strong>Usage:</strong> Wrap your code in [raw]...[/raw] tags. To avoid problems, only edit posts that contain raw code in HTML mode. <strong><a href="http://rawhtmlpro.com/?utm_source=RawHTML%20free&utm_medium=plugin_description&utm_campaign=Plugins">Upgrade to Pro</a></strong> to be able to use Visual editor on the same posts without it messing up the code.
|
| 6 |
+
Version: 1.6.1
|
| 7 |
Author: Janis Elsts
|
| 8 |
Author URI: http://w-shadow.com/
|
| 9 |
*/
|
readme.txt
CHANGED
|
@@ -3,7 +3,7 @@ Contributors: whiteshadow
|
|
| 3 |
Tags: posts, formatting, javascript, html, css, code, disable
|
| 4 |
Requires at least: 2.8
|
| 5 |
Tested up to: 5.2
|
| 6 |
-
Stable tag: 1.6
|
| 7 |
|
| 8 |
Lets you use raw HTML or any other code in your posts. You can also disable smart quotes and other automatic formatting on a per-post basis.
|
| 9 |
|
|
@@ -90,6 +90,9 @@ Open to the post editor and click the "Screen Options" button in the top-right p
|
|
| 90 |
|
| 91 |
== Changelog ==
|
| 92 |
|
|
|
|
|
|
|
|
|
|
| 93 |
= 1.6 =
|
| 94 |
* Added a way to preserve `[raw]` blocks in post excerpts.
|
| 95 |
* Enabled the "Raw HTML" metabox for custom post types.
|
| 3 |
Tags: posts, formatting, javascript, html, css, code, disable
|
| 4 |
Requires at least: 2.8
|
| 5 |
Tested up to: 5.2
|
| 6 |
+
Stable tag: 1.6.1
|
| 7 |
|
| 8 |
Lets you use raw HTML or any other code in your posts. You can also disable smart quotes and other automatic formatting on a per-post basis.
|
| 9 |
|
| 90 |
|
| 91 |
== Changelog ==
|
| 92 |
|
| 93 |
+
= 1.6.1 =
|
| 94 |
+
* Fixed a conflict with the "AMP Stories" plugin. This fix may also help with current or future conflicts with other plugins that remove the default post filters.
|
| 95 |
+
|
| 96 |
= 1.6 =
|
| 97 |
* Added a way to preserve `[raw]` blocks in post excerpts.
|
| 98 |
* Enabled the "Raw HTML" metabox for custom post types.
|
