Help us understand the problem. What is going on with this article?

古いWordPressテーマの修正作業は大変

More than 1 year has passed since last update.

https://wp-update.info/ とは別件で手伝ってる会社のWordPressを新サーバーに移行中。
前に書いたgit+composerを使う形。
まず自分が数個移行して手順をドキュメントにまとめる。
それを見ながら残りは他の人にやってもらってるけどローカルで動作テストしてからと書いてるのに全くやってないので
今はgit cloneしてテーマを修正している段階。
GitLab+ForgeでPush to Deployの環境は完備してるので修正していくだけ。

例えばfunctions.phpにこういうコード。

class TextArea2 extends WP_Widget {
  function TextArea2() { parent::WP_Widget(false, $name = 'テキストR'); }
    function widget($args, $instance) { extract( $args );
    $title = apply_filters( 'widget_example', $instance['title'] );
    $text  = apply_filters( 'widget_example', $instance['text'] );
    $html .= $text;
    echo do_shortcode($html);
 }
    function update($new_instance, $old_instance) { $instance = $old_instance;
    $instance['title']  = trim($new_instance['title']);
    $instance['text']   = trim($new_instance['text']);
    return $instance;
  }
    function form($instance) {
    $title  = esc_attr($instance['title']);
    $text   = esc_attr($instance['text']);
    $html = "<p>\n";
    $html .= "<label for='{$this->get_field_id('title')}'>タイトル:</label>\n";
    $html .= "<input class='widefat' id='{$this->get_field_id('title')}' name='{$this->get_field_name('title')}' type='text' value='{$title}'>\n";
    $html .= "</p>\n<p>\n";
    $html .= "<label for='{$this->get_field_id('text')}'>テキスト:</label>\n";
    $html .= "<textarea rows='3' colls='20' class='widefat' id='{$this->get_field_id('text')}' name='{$this->get_field_name('text')}' type='text' value='{$text}'>{$text}</textarea>\n";
    $html .= "</p>\n";
    echo $html;
    }
}
add_action('widgets_init', create_function('', 'return register_widget("TextArea2");'));
  • PHP4時代のclassコンストラクタの書き方。
  • {}を1行で書きたがる変な癖。CSSでもこんなだった。
  • extract。逆のcompactはよく使うけどextractは危険…。
  • create_function
  • そもそもこれ何のためのウィジェットなんだ…。テキストウィジェットでショートコード使うためにわざわざこんな無駄なことしてる…?

class使ってるのはここだけなのでどこかからコピペしてるだけだろう…。
コンストラクタはPHP7.0で非推奨になってPHP8でもまだエラーになるだけらしい。削除でいいのでは…。
ローカルで動かすだけでエラーや警告が出るからすぐ分かるはずなのに今まで直してないのは本当に意味が分からない。

とりあえず自動整形してエラーが出る箇所のみ直す。

    public function __construct()
    {
        parent::__construct(false, $name = 'テキストR');
    }
add_action('widgets_init', function () {
    register_widget("TextArea2");
});

テーマ全体がこんな調子なので全ファイルに修正が入る。
1回直すだけならいいんだけど
問題はこれを他のテーマにもコピペしてるのでこんなのが大量にある…。
100か200か。
さすがにそんな量を自分がやるのは無理なのでテーマ作った人に責任持ってやってもらう。

さらに他社でもあまり変わらない。
表向きWordPressが得意とか言ってる会社でも実態はこんな初心者レベルだからマジで…。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away