class-ld-settings-fields-wpeditor.php
3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
/**
* LearnDash WPEditor Settings Field.
*
* @since 3.0.0
* @package LearnDash\Settings\Field
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ( class_exists( 'LearnDash_Settings_Fields' ) ) && ( ! class_exists( 'LearnDash_Settings_Fields_WPEditor' ) ) ) {
/**
* LearnDash WPEditor Settings Field.
*
* @since 3.0.0
* @uses LearnDash_Settings_Fields
*/
class LearnDash_Settings_Fields_WPEditor extends LearnDash_Settings_Fields {
/**
* Public constructor for class
*
* @since 3.0.0
*/
public function __construct() {
$this->field_type = 'wpeditor';
parent::__construct();
}
/**
* Function to crete the settings field.
*
* @since 3.0.0
*
* @param array $field_args An array of field arguments used to process the output.
* @return void
*/
public function create_section_field( $field_args = array() ) {
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$field_args = apply_filters( 'learndash_settings_field', $field_args );
if ( isset( $field_args['editor_args'] ) ) {
$wpeditor_args = $field_args['editor_args'];
} else {
$wpeditor_args = array();
}
if ( ( isset( $field_args['attrs'] ) ) && ( ! empty( $field_args['attrs'] ) ) ) {
$wpeditor_args = array_merge( $wpeditor_args, $field_args['attrs'] );
}
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$html = apply_filters( 'learndash_settings_field_html_before', '', $field_args );
wp_editor(
$this->get_field_attribute_value( $field_args, false ),
$this->get_field_attribute_id( $field_args, false ),
$wpeditor_args
);
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$html = apply_filters( 'learndash_settings_field_html_after', $html, $field_args );
echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Need to output HTML
}
/**
* Default validation function. Should be overridden in Field subclass.
*
* @since 3.0.0
*
* @param mixed $val Value to validate.
* @param string $key Key of value being validated.
* @param array $args Array of field args.
*
* @return mixed $val validated value.
*/
public function validate_section_field( $val, $key, $args = array() ) {
if ( ( isset( $args['field']['type'] ) ) && ( $args['field']['type'] === $this->field_type ) ) {
if ( ! empty( $val ) ) {
$val = wp_check_invalid_utf8( strval( $val ) );
if ( ! empty( $val ) ) {
$val = sanitize_post_field( 'post_content', $val, 0, 'db' );
}
}
return $val;
}
return false;
}
/**
* Convert Settings Field value to REST value.
*
* @since 3.3.0
*
* @param mixed $val Value from REST to be converted to internal value.
* @param string $key Key field for value.
* @param array $field_args Array of field args.
* @param WP_REST_Request $request Request object.
*/
public function field_value_to_rest_value( $val, $key, $field_args, WP_REST_Request $request ) {
$field_value = array(
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
'rendered' => apply_filters( 'the_content', $val ),
);
if ( ( 'edit' === $request['context'] ) ) {
$field_value['raw'] = $val;
}
return $field_value;
}
}
}
add_action(
'learndash_settings_sections_fields_init',
function() {
LearnDash_Settings_Fields_WPEditor::add_field_instance( 'wpeditor' );
}
);