2014-12-23 15 views
0

我正在構建一個Wordpress網站,我使用查詢字符串來主題頁面顏色取決於用戶通過網站的旅程。將查詢變量添加到Wordpress的'page_link'過濾器會導致PHP致命錯誤

爲了將當前顏色方案傳遞到下一頁以添加連續性,我篩選頁面鏈接並添加當前查詢字符串(如果存在)。通過此代碼:

function append_query_string($url, $post) { 
    if(!empty($_GET['type'])){ 
    return add_query_arg('type', $_GET['type'], $url); 
    } elseif (is_page(array('sound', 'vfx'))) { 
    return add_query_arg('type', get_the_slug(), $url); 
    } 
} 
add_filter('page_link', 'append_query_string', 9, 2); 
add_filter('post_type_link', 'append_query_string', 10, 2); 

這兩個過濾器都正常工作。除了導致內存問題的頁面之外。我已經把範圍縮小到由「page_link」過濾器所引起:

mod_fcgid: stderr: PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 93 bytes) 

我編輯了內存限制,不幸的是沒有幫助,當它有足夠的內存,以避免內存錯誤(這是512MB - 我又把它放回去了)我仍然沒有看到頁面。

我已經用盡了可能導致它的想法。我是第一個相信我的代碼有問題的人,但是不明白爲什麼網站在除了一頁以外的所有網站上都能很好地運行。

P.S.該網頁創建的視頻幻燈片,工作正常,如果我禁用「page_link」過濾器

+0

@Alan感謝訪問餅乾!我選擇使用查詢字符串選項的原因是允許用戶使用正確的顏色方案來分享URL。 – plowryonline

回答

0

你可以使用cookies:

add_action('init', 'myfunction'); 
function myfunction() { 
    // You should sanitize 'type' before using it 
    $type = $_GET['type']; 
    if(!empty($type)) { 
     setcookie('current_color', $type, strtotime('+1 day'));  
    } elseif (is_page(array('sound', 'vfx'))) { 
     setcookie('current_color', get_the_slug(), strtotime('+1 day'));  
    } 
} 

然後,你可以用$_COOKIE['current_color']

相關問題