当我选中我的 Wordpress 插件中的复选框时,如何应用过滤器?
How can I apply a filter when I check the checkbox in my Wordpress plugin?
我正在构建一个 wordpress 插件,当我选中插件设置页面中的复选框时,我想应用和使用具有以下代码的文件。
功能 我要申请:
function greeklish_title_sanitizer($text) {
if ( !is_admin() ) return $text;
$expressions = array(
'/[αάΑΆ]/u' => 'a',
'/[βΒ]/u' => 'v',
'/[γΓ]/u' => 'g',
'/[δΔ]/u' => 'd',
'/[εέΕΈ]/u' => 'e',
'/[ζΖ]/u' => 'z',
'/[ηήΗΉ]/u' => 'i',
'/[θΘ]/u' => 'th',
'/[ιίϊΙΊΪ]/u' => 'i',
'/[κΚ]/u' => 'k',
'/[λΛ]/u' => 'l',
'/[μΜ]/u' => 'm',
'/[νΝ]/u' => 'n',
'/[ξΞ]/u' => 'x',
'/[οόΟΌ]/u' => 'o',
'/[πΠ]/u' => 'p',
'/[ρΡ]/u' => 'r',
'/[σςΣ]/u' => 's',
'/[τΤ]/u' => 't',
'/[υύϋΥΎΫ]/u' => 'y',
'/[φΦ]/iu' => 'f',
'/[χΧ]/u' => 'ch',
'/[ψΨ]/u' => 'ps',
'/[ωώ]/iu' => 'o',
'/[αΑ][ιίΙΊ]/u' => 'e',
'/[οΟΕε][ιίΙΊ]/u' => 'i',
'/[αΑ][υύΥΎ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'af',
'/[αΑ][υύΥΎ]/u' => 'av',
'/[εΕ][υύΥΎ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'ef',
'/[εΕ][υύΥΎ]/u' => 'ev',
'/[οΟ][υύΥΎ]/u' => 'ou',
'/(^|\s)[μΜ][πΠ]/u' => 'b',
'/[μΜ][πΠ](\s|$)/u' => 'b',
'/[μΜ][πΠ]/u' => 'b',
'/[νΝ][τΤ]/u' => 'nt',
'/[τΤ][σΣ]/u' => 'ts',
'/[τΤ][ζΖ]/u' => 'tz',
'/[γΓ][γΓ]/u' => 'ng',
'/[γΓ][κΚ]/u' => 'gk',
'/[ηΗ][υΥ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'if',
'/[ηΗ][υΥ]/u' => 'iu',
);
$text = preg_replace( array_keys($expressions), array_values($expressions), $text );
return $text;
}
add_filter('sanitize_title', 'greeklish_title_sanitizer', 1);
我的插件 main
文件:
<?php
/*
Plugin Name: random permalink converter
Description: This is my custom Plugin!
Author: Jordan Piperkata
Version: 1.0.0
Tested up to: 5.9
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
defined( 'ABSPATH' ) or die;
function gpc_add_settings_page() {
add_options_page( 'GRPC', 'randomPermalinksConverter', 'manage_options', 'random-permalink-converter', 'gpc_render_plugin_settings_page' );
register_setting(
'gpc_settings', // settings group name
'homepage_text', // option name
'sanitize_text_field' // sanitization function
);
add_settings_section(
'some_settings_section_id', // section ID
'', // title (if needed)
'', // callback function (if needed)
'random-permalink-converter' // page slug
);
add_settings_field(
'homepage_text',
'Homepage text',
'text_field_html', // function which prints the field
'random-permalink-converter', // page slug
'some_settings_section_id', // section ID
array(
'label_for' => 'homepage_text',
'class' => 'gpc-class', // for <tr> element
)
);
}
add_action( 'admin_menu', 'gpc_add_settings_page' );
function gpc_render_plugin_settings_page() {
echo '<div class="wrap">
<h1>random Permalink Converter Settings Page</h1>
<form method="post" action="options.php">';
settings_fields( 'gpc_settings' ); // settings group name
do_settings_sections( 'random-permalink-converter' ); // just a page slug
submit_button();
echo '</form></div>';
}
function text_field_html(){
$text = get_option( 'homepage_text' );
if ( $text == 'on' ) {
printf(
'<input type="checkbox" id="homepage_text" name="homepage_text" checked="checked" />',
esc_attr( $text )
);
echo 'Toggle is: '.$text;
} else {
printf(
'<input type="checkbox" id="homepage_text" name="homepage_text" />',
esc_attr( $text )
);
echo 'Toggle is: Off';
}
}
function permalink_set(){
add_filter('sanitize_title', 'random_title_sanitizer', 1);
}
回顾:
1): 我在主文件中使用这段基本代码来创建自定义插件设置页面。
2): 我有一个名为 text_field_html
的函数,它创建了一个复选框,我希望当复选框被选中时应用 function's file
的过滤器。但是在 if
之后包含检查复选框是否被选中的文件不起作用,因为这个插件应该回显一个字符串。如果我只是直接在 main
文件中使用 function's code
,它工作正常,但当然没有先选中复选框。
问题:
我在这里做错了什么?或者,当我选中设置页面中的复选框并保存时,如何调用 wordpress 的这种类型的 add_filter
函数并使它们保持活动状态?
提前感谢您的宝贵时间!
希望我明白你的意思。你应该检查选项 homepage_text
并添加过滤器。
add_action('init', 'permalink_set');
function permalink_set(){
if (get_option( 'homepage_text' ) == 'on'){
add_filter('sanitize_title', 'random_title_sanitizer', 1);
}
}
我正在构建一个 wordpress 插件,当我选中插件设置页面中的复选框时,我想应用和使用具有以下代码的文件。
功能 我要申请:
function greeklish_title_sanitizer($text) {
if ( !is_admin() ) return $text;
$expressions = array(
'/[αάΑΆ]/u' => 'a',
'/[βΒ]/u' => 'v',
'/[γΓ]/u' => 'g',
'/[δΔ]/u' => 'd',
'/[εέΕΈ]/u' => 'e',
'/[ζΖ]/u' => 'z',
'/[ηήΗΉ]/u' => 'i',
'/[θΘ]/u' => 'th',
'/[ιίϊΙΊΪ]/u' => 'i',
'/[κΚ]/u' => 'k',
'/[λΛ]/u' => 'l',
'/[μΜ]/u' => 'm',
'/[νΝ]/u' => 'n',
'/[ξΞ]/u' => 'x',
'/[οόΟΌ]/u' => 'o',
'/[πΠ]/u' => 'p',
'/[ρΡ]/u' => 'r',
'/[σςΣ]/u' => 's',
'/[τΤ]/u' => 't',
'/[υύϋΥΎΫ]/u' => 'y',
'/[φΦ]/iu' => 'f',
'/[χΧ]/u' => 'ch',
'/[ψΨ]/u' => 'ps',
'/[ωώ]/iu' => 'o',
'/[αΑ][ιίΙΊ]/u' => 'e',
'/[οΟΕε][ιίΙΊ]/u' => 'i',
'/[αΑ][υύΥΎ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'af',
'/[αΑ][υύΥΎ]/u' => 'av',
'/[εΕ][υύΥΎ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'ef',
'/[εΕ][υύΥΎ]/u' => 'ev',
'/[οΟ][υύΥΎ]/u' => 'ou',
'/(^|\s)[μΜ][πΠ]/u' => 'b',
'/[μΜ][πΠ](\s|$)/u' => 'b',
'/[μΜ][πΠ]/u' => 'b',
'/[νΝ][τΤ]/u' => 'nt',
'/[τΤ][σΣ]/u' => 'ts',
'/[τΤ][ζΖ]/u' => 'tz',
'/[γΓ][γΓ]/u' => 'ng',
'/[γΓ][κΚ]/u' => 'gk',
'/[ηΗ][υΥ]([θΘκΚξΞπΠσςΣτTφΡχΧψΨ]|\s|$)/u' => 'if',
'/[ηΗ][υΥ]/u' => 'iu',
);
$text = preg_replace( array_keys($expressions), array_values($expressions), $text );
return $text;
}
add_filter('sanitize_title', 'greeklish_title_sanitizer', 1);
我的插件 main
文件:
<?php
/*
Plugin Name: random permalink converter
Description: This is my custom Plugin!
Author: Jordan Piperkata
Version: 1.0.0
Tested up to: 5.9
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
defined( 'ABSPATH' ) or die;
function gpc_add_settings_page() {
add_options_page( 'GRPC', 'randomPermalinksConverter', 'manage_options', 'random-permalink-converter', 'gpc_render_plugin_settings_page' );
register_setting(
'gpc_settings', // settings group name
'homepage_text', // option name
'sanitize_text_field' // sanitization function
);
add_settings_section(
'some_settings_section_id', // section ID
'', // title (if needed)
'', // callback function (if needed)
'random-permalink-converter' // page slug
);
add_settings_field(
'homepage_text',
'Homepage text',
'text_field_html', // function which prints the field
'random-permalink-converter', // page slug
'some_settings_section_id', // section ID
array(
'label_for' => 'homepage_text',
'class' => 'gpc-class', // for <tr> element
)
);
}
add_action( 'admin_menu', 'gpc_add_settings_page' );
function gpc_render_plugin_settings_page() {
echo '<div class="wrap">
<h1>random Permalink Converter Settings Page</h1>
<form method="post" action="options.php">';
settings_fields( 'gpc_settings' ); // settings group name
do_settings_sections( 'random-permalink-converter' ); // just a page slug
submit_button();
echo '</form></div>';
}
function text_field_html(){
$text = get_option( 'homepage_text' );
if ( $text == 'on' ) {
printf(
'<input type="checkbox" id="homepage_text" name="homepage_text" checked="checked" />',
esc_attr( $text )
);
echo 'Toggle is: '.$text;
} else {
printf(
'<input type="checkbox" id="homepage_text" name="homepage_text" />',
esc_attr( $text )
);
echo 'Toggle is: Off';
}
}
function permalink_set(){
add_filter('sanitize_title', 'random_title_sanitizer', 1);
}
回顾:
1): 我在主文件中使用这段基本代码来创建自定义插件设置页面。
2): 我有一个名为 text_field_html
的函数,它创建了一个复选框,我希望当复选框被选中时应用 function's file
的过滤器。但是在 if
之后包含检查复选框是否被选中的文件不起作用,因为这个插件应该回显一个字符串。如果我只是直接在 main
文件中使用 function's code
,它工作正常,但当然没有先选中复选框。
问题:
我在这里做错了什么?或者,当我选中设置页面中的复选框并保存时,如何调用 wordpress 的这种类型的 add_filter
函数并使它们保持活动状态?
提前感谢您的宝贵时间!
希望我明白你的意思。你应该检查选项 homepage_text
并添加过滤器。
add_action('init', 'permalink_set');
function permalink_set(){
if (get_option( 'homepage_text' ) == 'on'){
add_filter('sanitize_title', 'random_title_sanitizer', 1);
}
}