Php WordPress添加过滤器功能不返回输出

Php WordPress添加过滤器功能不返回输出,php,mysql,wordpress,Php,Mysql,Wordpress,我刚刚完成了WordPress函数的调试。调试让我疯狂地在查询中查找错误。我现在在函数的执行中没有看到错误,但是结果不会通过返回输出。显而易见的答案是,查询没有返回任何内容,尽管在修复查询语法之前出现了错误,但相同的代码仍然工作得很好。既然没有显示错误,输出就无法显示在页面上。其他线索是,我添加了一个echo,尽管代码应该只在概要文件页面上运行,但是echo出现在各个页面上。我是php新手,所以我无法理解代码如何在没有捕获错误的情况下运行,但却无法正常运行。特别是考虑到错误日志确实显示了错误,但

我刚刚完成了WordPress函数的调试。调试让我疯狂地在查询中查找错误。我现在在函数的执行中没有看到错误,但是结果不会通过返回输出。显而易见的答案是,查询没有返回任何内容,尽管在修复查询语法之前出现了错误,但相同的代码仍然工作得很好。既然没有显示错误,输出就无法显示在页面上。其他线索是,我添加了一个echo,尽管代码应该只在概要文件页面上运行,但是echo出现在各个页面上。我是php新手,所以我无法理解代码如何在没有捕获错误的情况下运行,但却无法正常运行。特别是考虑到错误日志确实显示了错误,但它实际上按预期工作。通过首先查找成员级别(第一个查询),然后查找成员的实际名称(基于第一个查询的第二个查询),查找成员的成员名称是一个简单的查询。“return$text.$content;”行似乎未触发。代码如下:

function Welcome($content) {
$welcome = '';
if ( is_page('Profile'))

    $url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $numb = str_replace('mysite.org/profile/?user_id=', '', $url);

    global $wpdb;
    $query  = $wpdb->prepare ('SELECT `membership_level_id` FROM `mm_user_data` WHERE `wp_user_id` = %d', '$numb');
    $idnum= $wpdb->get_var($query);

    $query  = $wpdb->prepare ('SELECT `name` FROM `mm_membership_levels` WHERE `id` = %d', '$idnum');
    $text= $wpdb->get_var($query);
    $text="<h3>$text</h3>";

return $text.$content;
}

add_filter('the_content', 'Welcome');
函数欢迎($content){
$welcome='';
如果(是第页(“档案”))
$url=$_服务器['HTTP_主机].$_服务器['REQUEST_URI'];
$numb=str_replace('mysite.org/profile/?user_id=','','',$url);
全球$wpdb;
$query=$wpdb->prepare('mm\u user\u data'中选择'membership\u level\u id','wp\u user\u id`=%d','$numb');
$idnum=$wpdb->get\u var($query);
$query=$wpdb->prepare('mm\u membership\u levels'中选择'name',其中'id'=%d','idnum');
$text=$wpdb->get_var($query);
$text=“$text”;
返回$text.$content;
}
添加_过滤器(“_内容”、“欢迎”);
1)如果,则缺少大括号。所以这个条件
if(is_page('Profile'))
只适用于它后面的第一行

2) 回调过滤器函数在任何情况下都必须返回值。所以你必须写这样的东西:

function Welcome($content) {
   if ( is_page('Profile')) {

       // your changes for content

       return $content;
   }
   return $content;
}
3) 为什么对查询参数使用单引号?如果需要用变量替换
%d
,则必须在不带引号(或双引号)的情况下写入
$numb

阅读更多。

感谢您提供的报价提示!为了回答您的问题,我一直在努力寻找各种符号形式的示例代码。。。引号,无引号,双引号。有些产生了正确的结果,但也产生了各种错误。作为一名php新手,我接受了其中一条错误消息的建议,并使用phpMySQL设计了一个SQL字符串。当应用程序转换为php时,它有单引号,如图所示。代码第一次运行时没有出现错误,但没有返回结果。我修改了代码,删除了$numb和$idnum中的引号,瞧;它最终产生了正确的结果,没有错误。以下是有效的代码:

function Welcome($content) {
$welcome = '';
if ( is_page('Profile')) 

   $url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
   $numb = str_replace('mysite.org/profile/?user_id=', '', $url);

   global $wpdb;
   $query  = $wpdb->prepare ('SELECT `membership_level_id` FROM `mm_user_data` WHERE `wp_user_id` = %d', $numb);
   $idnum= $wpdb->get_var($query);

   $query  = $wpdb->prepare ('SELECT `name` FROM `mm_membership_levels`   WHERE `id` = %d', $idnum);
   $text= $wpdb->get_var($query);
   $text="<h3>$text</h3>";

   return $text.$content;
}


add_filter('the_content', 'Welcome');
函数欢迎($content){
$welcome='';
如果(是第页(“档案”))
$url=$_服务器['HTTP_主机].$_服务器['REQUEST_URI'];
$numb=str_replace('mysite.org/profile/?user_id=','','',$url);
全球$wpdb;
$query=$wpdb->prepare('mm\u user\u data'中选择'membership\u level\u id','wp\u user\u id`=%d',$numb);
$idnum=$wpdb->get\u var($query);
$query=$wpdb->prepare('id`=%d',$idnum,'mm\u成员级别'中选择'name';
$text=$wpdb->get_var($query);
$text=“$text”;
返回$text.$content;
}
添加_过滤器(“_内容”、“欢迎”);

对于任何感兴趣的人,该代码旨在将用户MemberMouse成员名称插入WPS Pro个人资料页面。Membermouse没有用于获取用户信息的智能代码,只有登录用户除外(令人沮丧!),因此,当访问者单击WPS Pro目录查看我们的专业成员时,没有迹象表明该专业人员的专业水平。现在,档案所有者成员级别显示在WPS Pro档案页面的顶部,以便查看该专业人员。