我正在尝试使用钩子after_setup_theme
在主题激活上设置图像大小,但它似乎从未真正调用过。为什么呢?
if( !function_exists('theme_image_size_setup') )
{
function theme_image_size_setup()
{
//Setting thumbnail size
update_option('thumbnail_size_w', 200);
update_option('thumbnail_size_h', 200);
update_option('thumbnail_crop', 1);
//Setting medium size
update_option('medium_size_w', 400);
update_option('medium_size_h', 9999);
//Setting large size
update_option('large_size_w', 800);
update_option('large_size_h', 9999);
}
}
add_action( 'after_setup_theme ', 'theme_image_size_setup' );
相反,我已经围绕解决方案进行了解决方案,但如果有一个钩子,它会感觉不是最佳:
if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php' ) {
theme_image_size_setup();
}
这有效......但为什么after_setup_theme
挂钩没有响应?
答案 0 :(得分:5)
仅当您的主题已从其他主题切换为TO时,才会执行此操作。这是您可以获得最接近主题激活的内容:
add_action("after_switch_theme", "mytheme_do_something");
或者你可以在你的wp_options表中保存一个选项并在每个页面加载上检查一下这个选项,很多人都推荐这个选项,即使它对我来说似乎效率低下:
function wp_register_theme_activation_hook($code, $function) {
$optionKey="theme_is_activated_" . $code;
if(!get_option($optionKey)) {
call_user_func($function);
update_option($optionKey , 1);
}
}
答案 1 :(得分:3)
也许问题可能是你在这个字符串'after_setup_theme '
中有额外的空间
试试这样:
add_action( 'after_setup_theme', 'theme_image_size_setup' );
答案 2 :(得分:1)
每次加载页面时都会运行 after_setup_theme 。所以它不是更好的解决方案。
答案 3 :(得分:0)
在WPMU环境中使用WP 3.9,有一个名为switch_theme的动作,它被称为切换主题的所有内容。
调用此操作时,将传递以下$ _GET参数:action = activate,stylesheet =
我在mu-plugins / theme-activation-hook.php
中创建了一个新文件add_action('switch_theme','rms_switch_theme');
function rms_switch_theme($new_name, $new_theme='') {
if (isset($_GET['action']) && $_GET['action'] == 'activate') {
if (isset($_GET['stylesheet']) && $_GET['stylesheet'] == 'rms') {
// perform the theme switch processing,
// I echo the globals and immediately exit as WP will do redirects
// and will not see any debugging output on the browser.
echo '<pre>'; print_r($GLOBALS); echo '</pre>'; exit;
}
}
}