Wordpress未定义索引问题php

时间:2016-01-06 15:49:36

标签: php wordpress

我的wordpress仪表板中出现以下错误,该错误与我编写的一段代码有关,但我不确定如何解决错误:

AuthorisedAction

以下是它所指的代码:

Notice: Undefined index: draft in /home/sites/samskirrow.com/public_html/skizzar-test/wp-content/mu-plugins/skizzar-dashboard.php on line 331

我知道问题是在db中找不到某些参数(例如,可能没有任何"挂起"帖子),因此它会抛出错误。我怎样才能解决这个问题,例如,如果参数存在......

此处的目标是删除'('')' wordpress中的帖子计数括号。因此,当您在视图帖子或查看页面屏幕上时,在帖子/页面列表上方有一个子菜单,其中包含以下项目'所有','已发布',&# 39;垃圾','待定' - 这些是用户可以单击的过滤器。每个过滤器旁边都有一个数字,即该过滤器中的帖子/页数。这个计数的格式是([NUMBER]) - 这个代码只是去掉那些括号。

2 个答案:

答案 0 :(得分:2)

我注意到谷歌有点你正在使用代码格式this Wordpress SE answer。这与您的需求不符,因为此代码是在重新计算OP对其进行一些操作后的帖子数量。

要删除括号,请查看 class-wp-list-table.php 中的以下函数:

public function views() {
    $views = $this->get_views();
    $views = apply_filters( "views_{$this->screen->id}", $views );
    if ( empty( $views ) )
        return;
    $this->screen->render_screen_reader_content( 'heading_views' );
    echo "<ul class='subsubsub'>\n";
    foreach ( $views as $class => $view ) {
        $views[ $class ] = "\t<li class='$class'>$view";
    }
    echo implode( " |</li>\n", $views ) . "</li>\n";
    echo "</ul>";
}

这是构建您尝试更改的用户菜单的功能。如果你仔细观察这一点,你会发现$view被回应的来自$views之前被过滤

$views = apply_filters( "views_{$this->screen->id}", $views )

$this->screen->id代表当前屏幕的ID,例如edit-post

因此,通过添加这个简单的过滤器,您将实现您想要做的事情:

add_filter('views_edit-post', 'remove_count_parenthesis', 10, 1);
function remove_count_parenthesis($views) {
    foreach($views as $key => $view) {
        $views[$key] = str_replace(array('(', ')'), '', $view);
    }
    return $views;
}

答案 1 :(得分:1)

您需要检查数组中是否有值'draft'

if (isset( $views['draft'] ))  {
 $views['draft'] = preg_replace( '/\(.+\)/U', ''.$draft.'', $views['draft'] ); 
}