为了获得更新,我最终从主题加载了更新文本。php页面,请执行以下操作:
HTML:
<div id="ajax-test"></div>
jQuery:
$(\'#ajax-test\').load(\'<?php bloginfo(\'url\'); ?>/wp-admin/themes.php .theme.active .update-message\', function(){
$(\'#ajax-test\').append(\'<a class="update-now" href="<?php bloginfo(\'url\'); ?>/wp-admin/themes.php?theme=your-theme-name" target="_blank">Update Now</a>\');
$(\'#ajax-test\').addClass(\'active\');
});
除非找到更新,否则要隐藏的Css:
#ajax-test .button-link{
display:none;
}
.update-now{
display:none;
}
.update-message + .update-now{
display:inline-block;
}
对于非管理员用户,您需要允许他们使用
add_cap( $role, $cap )
, 并设计出主题更新不需要的所有内容。
我可以看到这有两个问题:如果用户编辑CSS,他们可以使用仪表板导航,也可以更改主题。
我在我的函数中设置了重定向。仅允许在wp\\U admin中访问此页面的php:
$role = get_role( \'editor\' );
$role->add_cap( \'update_themes\' );
$role->add_cap( \'switch_themes\' );
add_action( \'init\', \'blockusers_init\' );
function blockusers_init() {
if ( is_admin() && ! current_user_can( \'administrator\' ) && strpos($_SERVER[\'REQUEST_URI\'], \'wp-admin/themes.php\') == false && strpos($_SERVER[\'REQUEST_URI\'], \'wp-admin/update.php?action=upgrade-theme\') == false &&
! ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
};
对于主题更新,如果用户想要故意编辑html来构建自己的站点,我愿意让他们这样做。
也许这不是最优雅的解决方案,但这是我为我的情况找到的最佳选择。