When to call add_filter

时间:2019-08-26 作者:Toniq

我正在我的一个插件中使用wp\\u video\\u shortcode\\u override filter。我想将此设置为on option top user,以便其在默认情况下不处于活动状态。我设置了以下场景。我需要打电话给wpdb,从我的插件中获取一些选项。这是好建筑吗?

add_action(\'init\', \'foo_init_setup\');

function foo_init_setup() {

    global $wpdb;
    $settings_table = $wpdb->prefix . "foo_settings";
    $result = $wpdb->get_row("SELECT options FROM {$settings_table} WHERE id = \'0\'", ARRAY_A);
    $settings = unserialize($result[\'options\']);
    $overide_video = (bool)($settings["overide_video"]);

    if($overide_video)add_filter(\'wp_video_shortcode_override\', \'foo_video_shortcode_override\', 10, 2 );

}

function foo_video_shortcode_override( $html, $attr ) {

    //something here

};

1 个回复
SO网友:Krzysiek Dróżdż

是的,你可以这样做。

你可以打电话foo_init_setup 在…上init 或打开wp 钩子,它会很好地工作。

我想我会尽可能晚一点说。这样,您就不会影响不以页面呈现结束的请求的加载时间(例如template_redirect 用于重定向)。

另外,你的代码有更大的问题。您可以创建自定义表,并使用包含插件选项的序列化数组仅存储一行。

如果你用Options API.

相关推荐

当我从wpdb html表行输出数据时,快捷代码不起作用

因此,我在仪表板中创建了一个带有tinyMCE编辑器的自定义页面,该编辑器可以将html保存在我在wp db中创建的表行中。我还能够在自定义模板页面上输出html。然而,我在tinyMCE(例如[电话])中写的短代码将显示为纯文本,而不是它所假定的数据。我知道在默认内容编辑器之外和模板页面中,您通常会使用echo do_shortcode(\'[phone]\'); 但我无法将其写入tinyMCE编辑器。我怎样才能使短代码工作?最佳RegardsShane Akira