Ответы пользователя по тегу PHP
  • Как сделать проверку на родительскую категорию и в зависимости от категории вывести текст?

    wfantastic
    @wfantastic
    увлечен wordpress
    С помощью функции можно сделать, еще это можно реализовать с помощью плагина if-so.
    Ответ написан
    Комментировать
  • Пагинация списка товаров woocommerce шорткодом?

    wfantastic
    @wfantastic
    увлечен wordpress
    нужно указать информацию о текущей вкладке в url адресе,
    для этого надо изменить свои шорт коды и включить информацию о вкладке в которой они находятся.
    Ответ написан
    Комментировать
  • Как лучше хранить данные в БД WordPress и выполнять экспорт/импорт в файл?

    wfantastic
    @wfantastic
    увлечен wordpress
    Для вашего случая, я бы рекомендовал использовать свою таблицу базы данных, созданную через $wpdb. Это позволит вам более гибко управлять структурой таблицы и производительностью.

    Как хранить данные

    Я бы рекомендовал создать две таблицы: одну для хранения кодов, а другую для хранения связанных с ними данных. В таблице кодов вы можете хранить только уникальный код, а в таблице данных вы можете хранить все связанные с ним данные, включая дату и другие фиксированные значения. Это упростит поиск и фильтрацию данных в будущем.

    Как делать экспорт/импорт в файл:

    Для экспорта и импорта данных в файл вы можете использовать стандартные функции экспорта и импорта WordPress, такие как export_wp() и import_wp(). Они позволяют экспортировать и импортировать содержимое WordPress, включая пользовательские типы записей и метаданные. Если вы используете свою таблицу, вы можете создать свои собственные функции экспорта и импорта, которые будут работать с вашей таблицей.

    Что касается того, как делать экспорт/импорт в файл раз в день, вы можете использовать планировщик задач WordPress, чтобы запускать скрипты экспорта и импорта в определенное время. Например, вы можете использовать функцию wp_schedule_event() для установки периодического запуска задач.

    Контроль размера таблицы:

    Чтобы контролировать размер таблицы, вы можете создать функцию удаления старых записей, которая будет удалять записи, которые старше заданного периода. Эту функцию можно запускать периодически через планировщик задач. Например, вы можете использовать функцию $wpdb->query() для удаления записей старше года.
    Ответ написан
    1 комментарий
  • Как вставить код рекламы после нужного абзаца в WP?

    wfantastic
    @wfantastic
    увлечен wordpress
    Попробуйте это.
    Мы можем использовать массив с номерами абзацев, после которых нужно вставить рекламу, и массив с соответствующими кодами рекламы. Затем мы можем пройтись по массиву контента и вставить рекламу после каждого абзаца, который находится в массиве номеров.

    add_filter( 'the_content', 'wpse_ad_content' );
    function wpse_ad_content( $content ) {
        if( !is_single() )
            return $content;
            
        // Массив с номерами абзацев, после которых нужно вставить рекламу
        $paragraphsAfter = array(3, 6, 9);
        
        // Массив с кодами рекламы для каждого абзаца
        $ads = array(
            '<div>Код рекламы для абзаца 3</div>',
            '<div>Код рекламы для абзаца 6</div>',
            '<div>Код рекламы для абзаца 9</div>'
        );
        
        $content = explode ( "</p>", $content );
        $new_content = '';
        $count = count($content);
        
        for ( $i = 0; $i < $count; $i ++ ) {
            $new_content .= $content[$i] . "</p>";
            
            // Проверяем, нужно ли вставлять рекламу после текущего абзаца
            if (in_array($i+1, $paragraphsAfter)) {
                $adIndex = array_search($i+1, $paragraphsAfter);
                if ($adIndex !== false && isset($ads[$adIndex])) {
                    $new_content .= $ads[$adIndex];
                }
            }
        }
        
        return $new_content;
    }
    Ответ написан
    Комментировать
  • Ошибка PHP: string-string?

    wfantastic
    @wfantastic
    увлечен wordpress
    функция содержит несколько ошибок:

    Переменная $now содержит только сегодняшнюю дату в формате Y-m-d, а не объект DateTime, который можно использовать для вычисления разницы между датами. Чтобы получить объект DateTime, нужно использовать функцию new DateTime().

    Переменная $date содержит строку с датой рождения, которую нужно преобразовать в объект DateTime, прежде чем можно вычислить разницу между датами.

    Переменная $datediff содержит результат вычитания двух объектов DateTime, которое возвращает объект DateInterval, а не целочисленное значение разницы в днях между датами.

    При выводе значения переменной $datediff в атрибуте value у элемента input используется не тот формат, который требуется для отображения возраста в годах.

    вот исправленный код:

    $now = new DateTime();
    $nothing = '';
    $date_str = get_the_author_meta( '_birthday', $user_id ); // получаем дату рождения как строку
    if ( empty( $date_str ) ) {
        $age_str = $nothing; // если дата рождения не указана, возвращаем пустую строку
    } else {
        $date = new DateTime( $date_str ); // преобразуем дату рождения в объект DateTime
        $diff = $now->diff( $date ); // вычисляем разницу между датами
        $age_str = $diff->y; // получаем количество полных лет
    }
    ?>
    <input type="text" name="_age" id="_age" placeholder="Возраст" value="<?php echo $age_str; ?>">
    Ответ написан
    Комментировать