2017-05-04 27 views
1

我目前正在一個Wordpress網站上工作。在導航欄中有包含各種子菜單的「more」菜單。如果視口等於或大於768px,我希望這個「更多」消失,而是顯示其他子菜單。WordPress的:我希望我的PHP行爲有所不同取決於視口的寬度

這是負責的functions.php「更多」按鈕的代碼塊:

$more_button_options = apply_filters('monstroid2_theme_more_button_options', array(
'more_button_type'    => get_theme_mod('more_button_type', monstroid2_theme()->customizer->get_default('more_button_type')), 
'more_button_text'    => get_theme_mod('more_button_text', monstroid2_theme()->customizer->get_default('more_button_text')), 
'more_button_icon'    => get_theme_mod('more_button_icon', monstroid2_theme()->customizer->get_default('more_button_icon')), 
'more_button_image_url'  => get_theme_mod('more_button_image_url', monstroid2_theme()->customizer->get_default('more_button_image_url')), 
'retina_more_button_image_url' => get_theme_mod('retina_more_button_image_url', monstroid2_theme()->customizer->get_default('retina_more_button_image_url')), 
)); 

wp_localize_script('monstroid2-theme-script', 'monstroid2', apply_filters(
'monstroid2_theme_script_variables', 
array(
'ajaxurl'    => esc_url(admin_url('admin-ajax.php')), 
'labels'    => $labels, 
'more_button_options' => $more_button_options, 
))); 

到目前爲止,我的解決辦法是簡單地刪除這個塊,但它創造了另一個問題,因爲漢堡圖標(顯示在768px以下)不再可點擊,弄亂了我的整個導航欄。

根據視口的寬度,我想到了functions.php中一個簡單的IF/ELSE聲明。但是PHP是一種基於服務器的語言。我知道如何用Javascript檢測寬度,但我無法弄清楚如何將這些信息發送到PHP。我已經搜索,但沒有找到解決方案。

誰能幫助?

+0

這是沒有什麼PHP可以幫助你。你需要讓JS和CSS來完成這項工作。 (也就是說,你可以從第二個請求中獲取數據,方法是將它放在客戶端的cookie中,但不能用於第一個請求。) – Boldewyn

+0

不可以,這是一個wordpress。如果我寫一個CSS的functions.php仍然會有優先權(已經嘗試;)) –

+0

嗯,什麼?對不起,我不知道你最後的評論意味着什麼。 – Boldewyn

回答

1

在網頁服務的前端和後端流程之間存在根本的誤解。 PHP(超文本預處理器)在服務器上運行並生成由Web服務器提供給用戶的HTTP響應。 HTTP響應(HTML,CSS,JS)由用戶的瀏覽器解析,然後運行前端腳本(Javascript)。基於用戶視口,您可以使用PHP完成的任何事情(除非您使用AJAX使用此信息擊中某個端點)。

0

使用PHP在視口上工作時間太長,而且過程很奇怪。 使用CSS來隱藏大於768px的元素以及其他大小的元素:)

最好的是CSS來完成這項工作。

相關問題