Php 7.0にアップグレードした後に、このファイル内のどの関数/ステートメントが致命的エラーを引き起こすのかを私が判断するのを手伝ってくれる人はいますか? PHP 5.6ではすべてがうまくいきます。
0行目のエラー:「theme_navigation :: update()の宣言はWP_Widget :: update($ new_instance、$ old_instance)と互換性があるはずです」
コード:
class theme_navigation extends WP_Widget {
public function __construct() {
parent::__construct(
'theme_navigation', // Base ID
'Child Page Navigation', // Name
array('description' => '') // Args
);
}
function form($instance){
$instance['tiutle'] = apply_filters( 'widget_title', $instance['title'] ); ?>
<p>Title: <input name="cpn_title" id="cpn_title" type="text" <?php if(isset($instance['title']) && $instance['title'] != "") echo 'value="'.$instance['title'].'"'; ?> /></p>
<p>Sort by Sort Order? <input name="cpn_sort" id="cpn_sort" type="checkbox" <?php if(isset($instance['sort']) && $instance['sort']) echo 'checked="checked"'; ?> value="1" /></p>
<?php }
function update(){
if(!isset($_POST['cpn_sort']))
$_POST['cpn_sort'] = 0;
foreach($_POST as $field => $val){
if(substr($field,0,4) != "cpn_")
continue;
$opts[substr($field,4)] = attribute_escape($_POST[$field]);
unset($_POST[$field]);
}
return $opts;
}
function widget($args,$instance){
global $post;
$instance['title'] = apply_filters( 'widget_title', $instance['title'] );
$page_arr = array('child_of' => $post->ID, 'parent' => $post->ID);
if($instance['sort'])
$page_arr['sort_column'] = 'menu_order';
$pages = get_pages($page_arr);
if($post->post_parent && !count($pages))
$page_arr['child_of'] = $page_arr['parent'] = $post->post_parent;
$pages = get_pages($page_arr);
if(!count($pages))
return;
echo $args['before_widget'];
if(isset($instance['title']) && $instance['title'] != "")
echo $args['before_title'].$instance['title'].$args['after_title'];
echo "<ul>";
foreach($pages as $page){
echo "<li><a href='".get_permalink($page->ID)."'>".get_the_title($page->ID)."</a></li>";
}
echo "</ul>".$args['after_widget'];
}
}
add_action( 'widgets_init', create_function( '', 'register_widget( "theme_navigation" );' ) );
クラス継承の関数には同じ関数引数が必要です。
そのため、コード内でfunction update()
をupdate($new_instance, $old_instance)
に置き換えます。