簡體   English   中英

導致產品搜索中斷的簡碼

[英]Shortcode Causing Product Search To Break

我們在我們網站的頂部添加了一個僅適用於移動設備的實時產品搜索簡碼。

在台式機上,我們將實時產品搜索留在了側欄中。

我們有一個 function,它只調用和放置移動設備的簡碼。

以前,當您在桌面設備上進行實時產品搜索並按下回車鍵時,將返回 20 種產品並在屏幕的網格視圖中顯示。

由於為移動設備添加了短代碼,這已經破壞了桌面設備的此功能。 產品仍然出現在下拉菜單中,但以前您可以按回車鍵,它們將移動到屏幕中央的漂亮網格視圖顯示中。

之前為了實現這個,為了讓產品出現在屏幕中央,添加了下面這行代碼:

if (get_option( 'wpsc_default_category' ) == 'list' && isset($wp_query- 
>query_vars['search_terms']))
$output = false;
}

在底部添加了上述代碼的代碼部分:

function wpsc_display_categories() {
global $wp_query;
$output = false;
if ( !is_numeric( get_option( 'wpsc_default_category' ) ) && ! get_query_var( 'product_tag' ) ) {

    if ( isset( $wp_query->query_vars['products'] ) )
        $category_id = $wp_query->query_vars['products'];
    else if ( isset( $_GET['products'] ) )
        $category_id = $_GET['products'];

    // if we have no categories, and no search, show the group list
    if ( is_numeric( get_option( 'wpsc_default_category' ) ) || (isset( $product_id ) && is_numeric( $product_id )) )
        $output = true;
    if ( (get_option( 'wpsc_default_category' ) == 'all+list'))
        $output = true;

    if (get_option( 'wpsc_default_category' ) == 'list' && (!isset($wp_query->query_vars['wpsc_product_category']) || !isset($wp_query->query_vars['product_tag']) && get_option('wpsc_display_categories')))
        $output = true;

    if (get_option( 'wpsc_default_category' ) == 'list' && isset($wp_query->query_vars['search_terms']))
        $output = false;
}

if ( isset( $category_id ) && $category_id > 0 )
    $output = false;
if ( get_option( 'wpsc_display_categories' ))
    $output = true;

return $output;
}

不確定為什么添加短代碼會破壞返回屏幕中央的產品,從此處頂部顯示的第一行代碼開始?

奇怪的是,我們擁有的 function 添加了手機簡碼,檢查它是否是移動設備,並且只應用移動設備簡碼。

關於我們如何解決這個問題的任何想法或想法?

functions.php 中的當前過濾器檢查移動設備,如果檢測到移動設備則應用簡碼:

add_action( 'generate_inside_navigation','tu_add_to_mobile_bar' );
function tu_add_to_mobile_bar() { 

if (wp_is_mobile()) {
?>
<div class="search">
<?php echo do_shortcode( '[our shortcode in here] ' ); ?>
</div>
<?php
}}

這是我所說的要點。

步驟 #1 - 向全局查詢注冊一個變量

這在技術上不是 100% 必要的,但通常被認為是最佳實踐。 您也可以只檢查原始的$_GET$_POST全局變量。

add_filter(
    'query_vars',
    function( $vars ) {
        $vars[] = 'is_mobile_search';
        return $vars;
    }
);

步驟 #2 - 傳遞變量

我假設您的短代碼實際上呈現了一個表單,並且您可以有條件地以某種方式更改它,也許[our_shortcode mobile="true"]

<form>
    <input type="hidden" name="is_mobile_search" value="true" />
</form>

步驟 #3 - 使用變量

這個 function 的內容是你的正常內容,你只是檢查is_mobile_search的文字(但任意)字符串值true

function wpsc_display_categories() {
    $is_mobile_search = get_query_var('is_mobile_search') === "true";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM