WordPress do_action挂钩似乎忽略了未保存的自定义程序更改?

时间:2017-02-07 10:22:18

标签: wordpress

在我的WordPress主题中,我有一个拖放可排序字段,目标是排列标题和导航菜单的顺序,以便我可以选择是否要显示上方或下方的菜单报头中。

enter image description here

在我的header.php文件中,我使用的是:do_action( 'mytheme_header' );

在我的function.php文件中,我正在添加操作:

add_action( 'mytheme_header', 'mytheme_do_header', get_theme_mod( 'mytheme_header_position', '1' ) );
add_action( 'mytheme_header', 'mytheme_do_nav_primary', get_theme_mod( 'mytheme_nav_primary_position', '2' ) );
add_action( 'mytheme_header', 'mytheme_do_nav_secondary', get_theme_mod( 'mytheme_nav_secondary_position', '3' ) );

mytheme_do_$是输出标题/菜单的html部分的函数。

到目前为止一切顺利。在实时网站上,它按预期工作。 但是在自定义程序内部,当我拖放项目时,为了创建新订单,自定义程序会刷新,但它始终使用旧的排列,从上次保存主题设置开始。 只有在我点击" Save&发布",然后通过进行另一次更改刷新页面,它显示新的安排。

似乎do_actionadd_action未使用自定义程序创建的get_theme_mod未保存的值。 当我回显get_theme_mod( 'mytheme_header_position', '1' )的值时,它们会在每个自定义程序刷新时显示正确的更新值。

我认为在未保存的do_action执行之前执行了add_actionget_theme_mod

如果是这样,我如何在操作挂钩中获取临时未保存的自定义程序get_theme_mod值?

1 个答案:

答案 0 :(得分:0)

add_action内包含使用get_theme_mod的{​​{1}}个问题解决方案,解决了这个问题。这样,在wordpress完全加载并且定制器有时间获取未保存的值之前,不会执行挂钩。

wp_loaded