Php 未经证实的辩手。分解意思

Php 未经证实的辩手。分解意思,php,wordpress,error-handling,Php,Wordpress,Error Handling,我希望能对理解这个致命错误有所帮助 通过查看其他帖子,这里是我认为我理解的,如果我错了,请纠正我。函数get_execrpt()当前正在传递0个内容(参数),它希望至少传递1个?我需要弄清楚如何让get_extract()找到至少一个要传递的参数? 致命错误:未捕获ArgumentCounter错误:函数get_extract()的参数太少,在第74行的/nas/content/live/all4edstg/wp content/themes/all4ed/page-press-room.php

我希望能对理解这个致命错误有所帮助

通过查看其他帖子,这里是我认为我理解的,如果我错了,请纠正我。函数get_execrpt()当前正在传递0个内容(参数),它希望至少传递1个?我需要弄清楚如何让get_extract()找到至少一个要传递的参数?

致命错误:未捕获ArgumentCounter错误:函数get_extract()的参数太少,在第74行的/nas/content/live/all4edstg/wp content/themes/all4ed/page-press-room.php中传递了0个,在/nas/content/live/all4edstg/wp content/themes/all4ed/functions中至少应传递1个参数。php:2420

堆栈跟踪:#0/nas/content/live/all4edstg/wp content/themes/all4ed/page press room.php(74):get#u extract()#1/nas/content/live/all4edstg/wp includes/template loader.php(75):include('/nas/content/li…)#2/nas/content/live/all4edstg/wp blog header.php(16):需要#once('/nas/content/li…)#3/nas/content/live/all4edstg/index.17(php):require('/nas/content/li…')#4{main}在第2420行的/nas/content/live/all4edstg/wp content/themes/all4ed/functions.php中抛出

Function.php行:2420

function get_excerpt ( $post, $limit = 200, $more = '...' ) {
$post = get_post($post);

if ( ! strlen($post->post_excerpt)) {
    return false;

}

if ($limit == -1) return $post->post_excerpt;

// Use the excerpt
$excerpt = $post->post_excerpt;
$excerpt = apply_filters('the_excerpt', $excerpt);

// Strip tags
$excerpt = strip_tags($excerpt);

return trim_text($excerpt, $limit, $more);
}
page-press-room.php行:74

    $leftcol .= '<p>'.get_excerpt().'</p>';
$leftcol.=''。获取摘录()。

';
看一看

您会注意到函数的定义如下:

function get_excerpt( $post, $limit = 200, $more = '...' ){

这意味着需要
$post
,因为它没有默认值,但是
$limit
$more
可以省略,因为它们有默认值(分别为200个字符和假椭圆)

这意味着您有两个选择:

1) 重写函数以处理默认的
$post

2) 将帖子传递到函数调用中。
$leftcol.=''。获取摘录(1234)。

'

最简单的方法是#2,只需将全局post ID传递给函数,取决于代码的其余部分,它看起来类似于以下任何一种:

 $leftcol .= '<p>'.get_excerpt( get_the_ID() ).'</p>';
 $leftcol .= '<p>'.get_excerpt( $post->ID ).'</p>';
 $leftcol .= '<p>'.get_excerpt( $post_id ).'</p>';

$post
在函数调用中是必需的,因为它没有默认值。请原谅我的无知,但是函数中是否已经有post,或者是否有其他位置我应该放置它函数***get_extract($post…***您必须始终将
$post
变量传递到函数中,例如,
get_extract($post)
。后两个参数(
$limit
$more
)是可选的,因为它们在函数声明中定义了默认值。哇,这太清楚了,谢谢。我现在要测试一下是的,我的工作形式非常旧,我无法更新。我正在重新设计整个网站,但我遇到了主题问题,因为我们不得不迁移到PHP7.2。这就解决了它!谢谢@Xhynk
function get_excerpt( $post = null, $limit = 200, $more = '...' ){
   if( $post == null ) $post = get_the_ID();

    $post = get_post( $post );

    if( ! strlen($post->post_excerpt) ){
        return false;
    }

    if( $limit == -1 )
        return $post->post_excerpt;

    // Use the excerpt
    $excerpt = $post->post_excerpt;
    $excerpt = apply_filters('the_excerpt', $excerpt);

    // Strip tags
    $excerpt = strip_tags($excerpt);

    return trim_text($excerpt, $limit, $more);
}