将变量从操作传递回模板

时间:2017-07-30 作者:goose

我是WordPress的新手。我读过here 处理从表单发布的数据的一个好方法是在init函数上插入一个操作,如下所示:

add_action( \'init\', \'contact_form_send_email\' );
我的函数似乎正确地处理了数据,但我不知道如何使变量在具有表单的同一模板中可用。

这样做的方法是什么?我听说设置全局变量不是一个好方法。

2 个回复
最合适的回答,由SO网友:hwl 整理而成

两者之间的区别add_action()add_filter() 语义不是技术性的,除非过滤器需要返回值,而操作需要/不需要返回值。问题是contact_form_send_email() needs 被调用/连接到init.

如果没有,则可以使用在模板中定义筛选器apply_filters(), 然后钩住它来运行函数并向其返回一个值。

在模板页面中:

$some_variable = \'some value\';
$some_variable = apply_filters(\'my_filter_hook\', $some_variable);
在函数中。php

add_filter(\'my_filter_hook\', \'contact_form_send_email\', 10, 1 );

function contact_form_send_email( $some_variable ) {
    //do stuff
    $some_variable = \'some new value\';

    return $some_variable;

}
为了帮助您确定需要挂接的位置Actions Reference 可能很有用。向下滚动,您还会看到一些特定于模板的挂钩。

SO网友:Johansson

WordPress中有一个有趣的功能,您可能会发现它在这种情况下很有用。它能够向缓存中添加一些内容,并在以后检索。

由于您正在挂接init,因此可以在之后检索缓存。这是通过使用wp_cache_add() 功能:

wp_cache_add( $key, $data, $group, $expire );
添加您想要的任何数据,然后在模板上获取它们:

wp_cache_get( $key, $group );
如果愿意,也可以在之后删除缓存。看看this 法典第页。

结束

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢