我是WordPress的新手。我读过here 处理从表单发布的数据的一个好方法是在init函数上插入一个操作,如下所示:
add_action( \'init\', \'contact_form_send_email\' );
我的函数似乎正确地处理了数据,但我不知道如何使变量在具有表单的同一模板中可用。这样做的方法是什么?我听说设置全局变量不是一个好方法。
我是WordPress的新手。我读过here 处理从表单发布的数据的一个好方法是在init函数上插入一个操作,如下所示:
add_action( \'init\', \'contact_form_send_email\' );
我的函数似乎正确地处理了数据,但我不知道如何使变量在具有表单的同一模板中可用。这样做的方法是什么?我听说设置全局变量不是一个好方法。
两者之间的区别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);
在函数中。phpadd_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 可能很有用。向下滚动,您还会看到一些特定于模板的挂钩。WordPress中有一个有趣的功能,您可能会发现它在这种情况下很有用。它能够向缓存中添加一些内容,并在以后检索。
由于您正在挂接init,因此可以在之后检索缓存。这是通过使用wp_cache_add()
功能:
wp_cache_add( $key, $data, $group, $expire );
添加您想要的任何数据,然后在模板上获取它们:wp_cache_get( $key, $group );
如果愿意,也可以在之后删除缓存。看看this 法典第页。我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢