Виджет WordPress (или боковая панель) рычаги существуют?

Если вы хотите отобразить сумму в долларах США в числовом формате, попробуйте:

DecimalFormat dFormat = new DecimalFormat("####,###,###.##");
System.out.println("$" + dFormat.format(income));
17
задан Grant Hutchinson 31 December 2013 в 23:03
поделиться

5 ответов

Это было вызвано необходимостью / желанием очистить ужасный HTML, извергнутый Виджеты WordPress. Мне нравится то, что они делают, но некоторые результаты заставляют меня плакать.

Краткий ответ - буферизация вывода , потому что я не смог найти ни одного виджета или хуков боковой панели.

Длинный ответ:

function tidy_sidebar( $sidebar_name_or_id )
{
    ob_start();

    $bool = dynamic_sidebar( $sidebar_name_or_id);

    if ( $bool )
    {
        $str = ob_get_contents();
        $str = 'do cleanup stuff...';
    }
    else
    {
        $str = '';
    }
    ob_end_clean();

    return $str;
}

Затем вызовите echo tidy_sidebar ('sidebar-name-or-id'); из своей темы.

8
ответ дан 30 November 2019 в 13:34
поделиться

Я не уверен, когда они внедрили фильтр widget_text, возможно, у них не было его в '09, когда этот вопрос был задан изначально, но так как он есть сейчас, и ради любого, кто получает этот стекопоток, как я сделал из Google и просто прочитал достаточно далеко, чтобы увидеть этот ответ, теперь это на самом деле довольно просто:

function my_widget_filter( $content )
{
    // manipulate $content as you see fit
    return $content;
}

add_filter( 'widget_text', 'my_widget_filter', 99 );
2
ответ дан 30 November 2019 в 13:34
поделиться

Также можно проверить фильтр dynamic_sidebar_params -

Другая ссылка -

0
ответ дан 30 November 2019 в 13:34
поделиться

есть много хуков для виджетов wordpress которые не задокументированы. Кодекс wordpress не перечисляет их по какой-либо причине (например, эти хуки могут измениться в будущем и неожиданно сломаться с новыми обновлениями и версиями) ... поэтому используйте их с особой осторожностью.

Чтобы узнать, что это такое, есть по крайней мере два места для поиска:

<wordpress install directory>/wp-includes/default-filters.php
<wordpress install directory>/wp-includes/default-widgets.php

, содержащийся в этих двух файлах, представляет собой довольно хороший список всех хуков, которые использует wordpress.

Примером может служить фильтр для виджетов widget_title

, снова используйте его с осторожностью, они не гарантируют, что они будут работать после конкретной версии кода, который вы просматриваете.

4
ответ дан 30 November 2019 в 13:34
поделиться

У меня была похожая проблема, и после изучения списка всех хуков фильтров WordPress Адама Брауна, я обнаружил, что нужный мне хук существует (widget_title, как упоминает pxl), но нет хука для получения всего вывода виджетов. Я решил подробнее рассказать о решении, которое сработало для меня.

Теоретически, хук widget_title должен влиять на все виджеты в вашем блоге, но я уверен, что некоторые сторонние виджеты пренебрегают включением необходимой строки кода для применения любых фильтров заголовков, так что это не является надежным решением. Однако у меня это сработало, и это можно использовать для применения пользовательского "шорткода" (точнее, в данном случае, "лонгкода") или синтаксиса к заголовкам ваших виджетов. Например, я хотел иногда включать html-код в заголовки виджетов, но по умолчанию весь html-код удаляется. Поэтому, чтобы иметь возможность добавлять такие вещи, как теги к тексту в некоторых заголовках, я выбрал пользовательский синтаксис: [[ вместо < & ]]] вместо > (например, [[em]] и [[/em]]), а затем создал функцию в файле functions моей темы. php для обработки этого пользовательского синтаксиса и замены его на html-эквивалент:

function parse_html_widget_title( $text ) {
    return str_replace(array('[[', ']]'), array('<', '>'), $text);
}

Затем я добавил строку ниже, чтобы добавить функцию в качестве фильтра:

add_filter('widget_title', 'parse_html_widget_title', 11); // 11 is one above the default priority of 10, meaning it will occur after any other default widget_title filters

Функциональность add_filter / apply_filter автоматически передает фильтруемое содержимое в качестве первого параметра функции, указанной в качестве фильтра, так что это все, что вам нужно сделать.

Чтобы сделать нечто подобное для основного вывода виджета, вам нужно просмотреть все ваши виджеты, чтобы увидеть, какие хуки они используют, и убедиться, что у них есть фильтр для основного вывода, затем использовать add_filter() для каждого найденного хука с вашей пользовательской функцией обратного вызова (например, это widget_text для вывода виджета Text, или get_search_form для формы поиска [вы можете увидеть это в wp-includes/general-template. php, в функции get_search_form()]). Проблема в том, что некоторые динамически генерируемые виджеты не имеют хуков (например, виджет Meta), поэтому буферизация вывода, предложенная Джеффом, является наиболее универсальным, хотя и не идеальным решением.

8
ответ дан 30 November 2019 в 13:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: