如何在wordpress中从php文件打印到控制台

如何在wordpress中从php文件打印到控制台,php,wordpress,Php,Wordpress,我有一个php文件,它是wordpress插件的一部分。我需要调试我们遇到的一个问题。我想知道变量的值是多少。如何将变量的值打印到控制台?建议使用echo、chrome或firefox扩展。我无法将echo输出到控制台(echo“$variablename”),也无法使用firefox的FireHP扩展。如果您考虑的是javascript控制台,则无法从PHP执行此操作 您可以从以下几个选项中进行选择: 要快速检查变量值,我将使用var_dump,它还将显示变量的数据类型。当您请求页

我有一个php文件,它是wordpress插件的一部分。我需要调试我们遇到的一个问题。我想知道变量的值是多少。如何将变量的值打印到控制台?建议使用echo、chrome或firefox扩展。我无法将echo输出到控制台(
echo“$variablename”
),也无法使用firefox的FireHP扩展。

如果您考虑的是javascript控制台,则无法从PHP执行此操作

您可以从以下几个选项中进行选择:


要快速检查变量值,我将使用var_dump,它还将显示变量的数据类型。当您请求页面时,这将输出到浏览器。

要回答您的问题,您可以执行以下操作:

echo '<script>console.log("PHP error: ' . $error . '")</script>';
echo'console.log(“PHP错误:'.$error.”);

但我建议您按照@Ishas的建议做一件事。确保
$error
中没有任何内容会弄乱您的脚本。

您可以编写如下实用程序函数:

function prefix_console_log_message( $message ) {

    $message = htmlspecialchars( stripslashes( $message ) );
    //Replacing Quotes, so that it does not mess up the script
    $message = str_replace( '"', "-", $message );
    $message = str_replace( "'", "-", $message );

    return "<script>console.log('{$message}')</script>";
}
echo prefix_console_log_message( "Error Message: This is really a 'unique' problem!" );
Error Message: This is really a -unique- problem!
function prefix_console_log_message( $message, $type = "log" ) {

    $message_types = array( 'log', 'error', 'warn', 'info' );
    $type          = ( in_array( strtolower( $type ), $message_types ) ) ? strtolower( $type ) : $message_types[0];
    $message       = htmlspecialchars( stripslashes( $message ) );
    //Replacing Quotes, so that it does not mess up the script
    $message = str_replace( '"', "-", $message );
    $message = str_replace( "'", "-", $message );

    return "<script>console.{$type}('{$message}')</script>";
}
echo prefix_console_log_message( "Error Message: This is really a 'unique' problem!" , 'error');
这将输出到控制台,如下所示:

function prefix_console_log_message( $message ) {

    $message = htmlspecialchars( stripslashes( $message ) );
    //Replacing Quotes, so that it does not mess up the script
    $message = str_replace( '"', "-", $message );
    $message = str_replace( "'", "-", $message );

    return "<script>console.log('{$message}')</script>";
}
echo prefix_console_log_message( "Error Message: This is really a 'unique' problem!" );
Error Message: This is really a -unique- problem!
function prefix_console_log_message( $message, $type = "log" ) {

    $message_types = array( 'log', 'error', 'warn', 'info' );
    $type          = ( in_array( strtolower( $type ), $message_types ) ) ? strtolower( $type ) : $message_types[0];
    $message       = htmlspecialchars( stripslashes( $message ) );
    //Replacing Quotes, so that it does not mess up the script
    $message = str_replace( '"', "-", $message );
    $message = str_replace( "'", "-", $message );

    return "<script>console.{$type}('{$message}')</script>";
}
echo prefix_console_log_message( "Error Message: This is really a 'unique' problem!" , 'error');
请注意引号被替换为“-”,这样做是为了使消息不会像@Josef Engelflost所指出的那样弄乱脚本

您还可以进一步执行以下操作:

function prefix_console_log_message( $message ) {

    $message = htmlspecialchars( stripslashes( $message ) );
    //Replacing Quotes, so that it does not mess up the script
    $message = str_replace( '"', "-", $message );
    $message = str_replace( "'", "-", $message );

    return "<script>console.log('{$message}')</script>";
}
echo prefix_console_log_message( "Error Message: This is really a 'unique' problem!" );
Error Message: This is really a -unique- problem!
function prefix_console_log_message( $message, $type = "log" ) {

    $message_types = array( 'log', 'error', 'warn', 'info' );
    $type          = ( in_array( strtolower( $type ), $message_types ) ) ? strtolower( $type ) : $message_types[0];
    $message       = htmlspecialchars( stripslashes( $message ) );
    //Replacing Quotes, so that it does not mess up the script
    $message = str_replace( '"', "-", $message );
    $message = str_replace( "'", "-", $message );

    return "<script>console.{$type}('{$message}')</script>";
}
echo prefix_console_log_message( "Error Message: This is really a 'unique' problem!" , 'error');
它将在控制台中输出错误。

在WordPress中从PHP登录到DevTools控制台

在这里,您可以看到我在WooCommerce中调试优惠券逻辑时针对实际问题的解决方案。此解决方案仅用于调试目的。(注意:屏幕截图不是最新的,它还将公开私有成员。)

特征
  • 允许在渲染开始之前和之后打印
  • 在前端和后端工作
  • 打印任意数量的变量
  • 对数组和对象进行编码
  • 公开对象的私有和受保护成员
  • 还要将日志记录到日志文件中
  • 安全方便地选择退出生产环境(以防您保留通话)
  • 打印调用方类、函数和挂钩(生活质量改善)
解决方案 wp-debug.php
函数控制台\u log():字符串{
列表(,$caller)=调试回溯(false);
$action=当前_action();
$encoded_args=[];
foreach(func_get_args()作为$arg)尝试{
if(is_对象($arg)){
$extract_props=函数($obj)使用(&$extract_props):数组{
$成员=[];
$class=get_class($obj);
foreach((新的ReflectionClass($class))->getProperties()作为$prop){
$prop->setAccessible(true);
$name=$prop->getName();
if(isset($class->{$name})){
$value=$prop->getValue($obj);
if(是_数组($value)){
$members[$name]=[];
foreach(价值为$item){
if(is_object($item)){
$itemArray=$extract_props($item);
$members[$name][]=$itemArray;
}否则{
$members[$name][]=$item;
}
}
}else if(is_object($value)){
$members[$name]=$extract_props($value);
}else$members[$name]=$value;
}
}
返回$members;
};
$encoded_args[]=json_encode($extract_props($arg));
}否则{
$encoded_args[]=json_encode($arg);
}
}捕获(例外$ex){
$encoded_args[]=''`'.print_r($arg,true)。'`;
}

$msg='`假设您不想直接使用
var\u dump()
将值转储到页面上,为什么不使用
file\u put\u contents()
将值输出到临时日志文件中呢?