Как я кодирую “&\” в URL в значении HTML-атрибута?

Вы можете использовать доступную ловушку фильтра woocommerce_shop_order_search_results, расположенную в конце функции , которая позволит переопределить этот метод:

add_filter( 'woocommerce_shop_order_search_results', 'custom_shop_order_search_results_filter', 10, 3 );
function custom_shop_order_search_results_filter( $order_ids, $term, $search_fields ) {
    global $wpdb;

    $term      = preg_replace('/[^0-9.]+/', '', $term); //  <===  <===  <===  Your change

    $order_ids = array();

    if ( is_numeric( $term ) ) {
        $order_ids[] = absint( $term );
    }

    if ( ! empty( $search_fields ) ) {
        $order_ids = array_unique(
            array_merge(
                $order_ids,
                $wpdb->get_col(
                    $wpdb->prepare(
                        "SELECT DISTINCT p1.post_id FROM {$wpdb->postmeta} p1 WHERE p1.meta_value LIKE %s AND p1.meta_key IN ('" . implode( "','", array_map( 'esc_sql', $search_fields ) ) . "')", // @codingStandardsIgnoreLine
                        '%' . $wpdb->esc_like( wc_clean( $term ) ) . '%'
                    )
                ),
                $wpdb->get_col(
                    $wpdb->prepare(
                        "SELECT order_id
                        FROM {$wpdb->prefix}woocommerce_order_items as order_items
                        WHERE order_item_name LIKE %s",
                        '%' . $wpdb->esc_like( wc_clean( $term ) ) . '%'
                    )
                )
            )
        );
    }
    return $order_ids
}

Код идет в файле function.php вашей активной детской темы (или активной темы). Проверено, оно должно работать.

15
задан Gumbo 8 April 2009 в 15:03
поделиться

5 ответов

амперсанд будет равен% 26 для HEX в стандартах кодирования URL

20
ответ дан 1 December 2019 в 01:11
поделиться

Вы можете использовать шестнадцатеричное представление символа, в данном случае% 26.

3
ответ дан 1 December 2019 в 01:11
поделиться

Я использую - [NSString gtm_stringByEscapingForURLArgument] , который предоставлен в Google Toolbox для Mac , в частности в GTMNSString + URLArguments.h и GTMNSString + URLArguments.m .

11
ответ дан 1 December 2019 в 01:11
поделиться
<a href='http://somewhere.com/two.woa/wa?id=000&#38;param=0'>click me</a>

Правильно, хотя '& amp;' чаще используется, чем '& # 38;' или '& # x2C;'.

Если метод 'stringByAddingPercentEscapesUsingEncoding' выполняет то, что говорит на жестяной коробке, он должен работать (*), но документация по NSString выглядит немного неясно, какие символы точно экранированы. Проверьте, что вы в конечном итоге, URL должен быть что-то вроде:

mailto:bob@example.com?subject=test&body=Link%3A%3Ca%20href%3D%22http%3A//example.com/script%3Fp1%3Da%26amp%3Bp2%3Db%22%3Elink%3C/a%3E

(*: по модулю обычного отказа от ответственности, что параметры mailto: link, такие как 'subject' и 'body', нестандартны, во многих ситуациях потерпят неудачу, и Обычно этого следует избегать.)

Как только приложение электронной почты открывается, текст останавливается на «... link:».

Если 'stringByAddingPercentEscapesUsingEncoding' не экранирует '<' в '% 3C', это может быть проблемой , В противном случае, это не может быть связано с побегами, но намеренное ограничение на уровне почтовой программы, запрещающее '<'. Как упоминалось ранее, «body = ...» не является надежной функцией.

В любом случае не следует ожидать, что почтовая программа распознает HTML-код и попытается отправить HTML-сообщение; очень немногие сделают это.

0
ответ дан 1 December 2019 в 01:11
поделиться

Вы используете stringByAddingPercentEscapesUsingEncoding , точно так же, как вы делаете.

Проблема в том, что вы недостаточно используете его. Формат, в который вы вставляете кодированное тело , также имеет амперсанд, который вы не закодировали. Вместо этого прикрепите к ней некодированную строку и закодируйте их (используя stringByAddingPercentEscapesUsingEncoding ) вместе.

1
ответ дан 1 December 2019 в 01:11
поделиться