使用未被调用的`add_action()`添加的函数

时间:2018-01-30 作者:CENT1PEDE

我是一名Javascript开发人员,对PHP/Wordpress非常陌生。就像我在网上看到的样本一样,我写了functions.php 添加自定义css文件的脚本,如下所示:

functions.php

<?php
  echo \'<h1>CASH ME OUTSIDE</h1>\';

  add_action(\'wp_enqueue_scripts\', \'theme_styles\');
  function theme_styles() 
  {
    echo \'<h1>CASH ME INSIDE</h1>\';
    wp_enqueue_style(\'theme_styles\', get_template_directory_uri() . \'/foo.css\');
  }
?>
检查functions.php 被称为I printed<h1>CASH ME OUTSIDE</h1> 它确实出现了。函数内部的回声theme_styles() 未被打印,这导致我得出结论,该函数未被调用。

3 个回复
最合适的回答,由SO网友:cybmeta 整理而成

A.echo 在函数中。php,wp_enqueue_scripts 或者任何其他非模板文件可能会由于已发送标头而导致致命错误而中断输出。echo 不是正确的调试方式。删除echo语句并检查页面的HTML,您的css应该在那里。要进行调试,请使用错误日志。

除此之外,您的代码似乎是正确的;确保包括wp_head()wp_footer() 在您的主题中。打印排队脚本和样式需要这些函数;那么就这样做:

 add_action(\'wp_enqueue_scripts\', \'theme_styles\');
 function theme_styles() {

    // You can use error_log, a native PHP function,
    // or any other custom log function
    if( WP_DEBUG ) {
        error_log(\'some debug information\');
    }

    wp_enqueue_style(\'theme_styles\', get_template_directory_uri() . \'/foo.css\');
  }

SO网友:Zex2911

查看网站的源代码,按CTRL+F键查看foo。css。wp\\u enqueue\\u scripts注册脚本/样式并将其加载到您的网站上,它不会响应任何内容。标题。php必须有wp\\u head()标记和footer。php必须具有wp\\u footer()标记。

SO网友:Peter HvD

enqueue_scripts() 不是一个在构建页面之前运行的钩子,它实际上不会自己输出任何东西-当页面显示时,您放在那里的任何输出(无论如何都不应该)都会被擦除。它所做的是将脚本文件添加到脚本列表中,脚本列表将由wp_head()wp_footer() 功能。

测试非打印挂钩的最佳方法是添加以下内容

echo "<h1>CASH ME INSIDE</h1>"; wp_die();

第二部分将导致所有内容突然停止,因此不会用实际页面替换输出。

希望有帮助

结束

相关推荐

Functions.php过滤器未应用于AJAX调用

我已经使用php向菜单中添加了一个元素(为了便于说明,简化了代码):add_filter( \'wp_nav_menu_\' . $menu_slug . \'_items\', \'add_menu_item\' , 10, 2 ); function add_menu_item ( $items ) { $item = sprintf(\'<li class=\"custom-item\">%s</li>\', menu_item_content ()