在我的WordPress主题中,我有一个拖放可排序字段,目标是排列标题和导航菜单的顺序,以便我可以选择是否要显示上方或下方的菜单报头中。
在我的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_action
或add_action
未使用自定义程序创建的get_theme_mod
未保存的值。
当我回显get_theme_mod( 'mytheme_header_position', '1' )
的值时,它们会在每个自定义程序刷新时显示正确的更新值。
我认为在未保存的do_action
执行之前执行了add_action
或get_theme_mod
?
如果是这样,我如何在操作挂钩中获取临时未保存的自定义程序get_theme_mod
值?
答案 0 :(得分:0)
在add_action
内包含使用get_theme_mod
的{{1}}个问题解决方案,解决了这个问题。这样,在wordpress完全加载并且定制器有时间获取未保存的值之前,不会执行挂钩。
wp_loaded