カテゴリー
Linux

【WordPress】お手軽なデバッグ方法メモ

お手軽デバッグコードのポイント

echo '<pre>'; var_dump($arg); echo '</pre>';

var_dump 前後を echo を使って pre タグで囲むのがポイントですわね。

具体例

子テーマを作っている時に、TwentySixteen では動いたのに TwentySeventeen では動かない箇所がございました。

上部メニューが表示されなくなる事態となりましたの><。

原因を突き止めるために、引数の中身が知りたかったのですの。

function add_search_box_to_menu( $items, $args ) {

    echo '<pre>debugging!!!!</pre>';
    echo '<pre>'; var_dump($args); echo '</pre>';


    if( $args->theme_location == 'top' ){
        return $items . '<li>' . get_search_form(false) . '</li>';
    }
}

そこで、上記のようにいたしました。

結果、if 文判定に使用するべき文字列は、 primary ではなく、top だとわかりましたわ♪

入れ替えて動くことを確認できましたの!

なお、次の内容が var_dump で出力されました。参考までに♪

object(stdClass)#7569 (17) {
  ["menu"]=>
  object(WP_Term)#7581 (10) {
    ["term_id"]=>
    int(69)
    ["name"]=>
    string(8) "head-nav"
    ["slug"]=>
    string(8) "head-nav"
    ["term_group"]=>
    int(0)
    ["term_taxonomy_id"]=>
    int(69)
    ["taxonomy"]=>
    string(8) "nav_menu"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    int(0)
    ["count"]=>
    int(15)
    ["filter"]=>
    string(3) "raw"
  }
  ["container"]=>
  string(3) "div"
  ["container_class"]=>
  string(0) ""
  ["container_id"]=>
  string(0) ""
  ["menu_class"]=>
  string(4) "menu"
  ["menu_id"]=>
  string(8) "top-menu"
  ["echo"]=>
  bool(true)
  ["fallback_cb"]=>
  string(12) "wp_page_menu"
  ["before"]=>
  string(0) ""
  ["after"]=>
  string(0) ""
  ["link_before"]=>
  string(0) ""
  ["link_after"]=>
  string(0) ""
  ["items_wrap"]=>
  string(36) "
%3$s
"
  ["item_spacing"]=>
  string(8) "preserve"
  ["depth"]=>
  int(0)
  ["walker"]=>
  string(0) ""
  ["theme_location"]=>
  string(3) "top"
}

なお、次コードも埋め込んでみましたけれども、var_dump された内容が HTML だったのでしょう、文字列としてではなく、通常のリンクとして表現されてしまいましたの><。

echo '<pre>'; var_dump($items); echo '</pre>';

ですので、pre タグで囲わなかったり、別のタグで囲んだり、なにか別の方法で文字列として表示する方法を取らなければなりませんわね。

おわりに

次のページが参考になりました!

以上です。

コメントを残す