一个网站,是建立了一段时间前,由另一个开发人员,我现在正在维护,已损坏。我已经查看了错误日志,这就是我所看到的:
[04-Apr-2018 05:30:47 UTC] PHP Warning: count(): Parameter must be an array or an object that implements Countable in /.../.../.../.../plugins/taxonomy-order/taxonomy-order.php on line 280现在你可能在想..。为什么我不直接更新插件。我希望,插件不再包括在WordPress上,开发人员已经删除了他/她的帐户,没有支持选项。所以我现在想自己解决这个问题。
我发现了导致这个问题的代码:
if( count( $taxonomies === 1 ) ) $taxonomy = array_shift( $taxonomies );为了尝试提供更多的上下文,以下是整个功能:
public function terms_clauses( $clauses, $taxonomies, $args ) {
global $wpdb;
$taxonomies = (array) $taxonomies;
if( count( $taxonomies === 1 ) ) $taxonomy = array_shift( $taxonomies );
else return $clauses;
if( !$this->has_taxonomy_support($taxonomy) ) return $clauses;
// Fields
if ( strpos( 'COUNT(*)', $clauses['fields'] ) === false ) $clauses['fields'] .= ', tm.meta_key, tm.meta_value ';
// Join
$clauses['join'] .= " LEFT JOIN {$wpdb->termmeta} AS tm ON (t.term_id = tm.term_id AND tm.meta_key = 'order') ";
// Order
if( isset( $args['menu_order'] ) && !$args['menu_order'] ) return $clauses; // menu_order is false when not added Order Clause
// Default to ASC
if( !isset( $args['menu_order'] ) || !in_array( strtoupper( $args['menu_order'] ), array( 'ASC', 'DESC' ) ) ) $args['menu_order'] = 'ASC';
$order = "ORDER BY CAST(tm.meta_value AS SIGNED) " . $args['menu_order'];
if ( $clauses['orderby'] ) {
$clauses['orderby'] = str_replace('ORDER BY', $order . ',', $clauses['orderby'] );
}else{
$clauses['orderby'] = $order;
}
return $clauses;
}以及使用情况:
add_filter( 'terms_clauses', array( $this, 'terms_clauses') , 10, 3 );不幸的是,PHP不是我的强项。我想我已经发现这是一个错误,因为新的重新在PHP7,但我不确定。
如果有人能帮我解决这个问题,我会非常高兴的。
干杯卢克。
更新
在@Norman的评论之后,我运行了他建议的代码,这是我得到的输出:
代码:
if( count( $taxonomies ) == 1 ) {
echo '<pre>';print_r($clauses);
echo '</pre>';die('call');
}
else {
return $clauses;
}结果:
Array
(
[fields] => t.*, tt.*
[join] => INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
[where] => tt.taxonomy IN ('nav_menu') AND tt.count > 0
[orderby] => ORDER BY t.name
[order] => ASC
[limits] =>
)
call由于诺曼的评论,问题现在已经解决了。
https://stackoverflow.com/questions/49643543
复制相似问题