ここでの目標は、幅が 768 ピクセルを超えるデバイスのクリック可能なリンクとして機能し、小型デバイスのデフォルトの動作を保持するサブアイテムを持つ Wordpress ブーストラップ メイン メニューのトップ レベル アイテムを作成することです。
navwalker.php ファイルの 83 行目あたりに次のコードがあります。
// If item has_children add atts to a.
if ( $args->has_children && $depth === 0 ) {
$atts['href'] = '#';
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
}
通常の画面でリンクをクリックできるようにするには、コードを変更する必要がありますが、else ステートメントを追加して、デフォルトの動作を保持する必要があります。たとえば、次のようになります。
// If item has_children add atts to a.
if ( $args->has_children && $depth === 0 ) {
if ( $windowwidth < 768) {
$atts['href'] = '#';
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
} else {
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
//$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
}
}
問題は、おそらく JavaScript で $windowwidth を取得して、PHP の if/else 句で使用できるようにする方法です。