Ответы в темах

Просмотр 15 ответов — с 121 по 135 (всего 149)
  • Автор Dmitry Kohan

    (@dmay1989)

    Ещё раз спасибо
    @yube , подскажите ещё, пожалуйста, нужно ли предварительно регистрировать ключ произвольного поля meta_key при помощи функции register_meta() прежде чем добавлять данные в таблицу postmeta ? и если нужно, то регистрацию meta_key можно производить в файле functions.php соответствующей темы ?

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , по поводу записи в базу Вы написали:

    Надеюсь, Вы не собираетесь это делать вручную прямо в базе.

    Я планирую записывать в базу после отправки формы посредством класса базы данных wpdb, используя метод $wpdb->insert($table,$data)
    Это ведь верный способ ?

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , спасибо огромное за ответ
    Ещё раз извините за беспокойство
    Вы писали:

    Принципиальной разницы нет. Хотя если понадобится поиск или фильтрация по этому параметру, то лучше хранить его отдельно.

    Подскажите ещё, пожалуйста, если хранить необходимые параметры отдельно в postmeta , у пользователя с ролью редактора будет возможность отредактировать их при необходимости из фронт-энда подобно редактированию основного контента записи, предоставляемого WP по умолчанию (поля post_title и post_content, подобно скрину http://prntscr.com/sc0mu4 ?
    и последнее — ведь не составит проблем после отправки формы в базе данных одновременно создавать записи в трех таблицах WP — wp_posts, wp_postmeta (ссылаясь на id данной добавленной записи) и term_relationships (также ссылаясь на id данной добавленной записи, есть ведь такая возможность ? ) ?

    Автор Dmitry Kohan

    (@dmay1989)

    Добился окончательного решения проблемы за счет исключения из кода классов, используемых библиотекой bootstrap-select.min.js (может кому-нибудь пригодится).
    @yube , спасибо огромное за помощь

    Автор Dmitry Kohan

    (@dmay1989)

    Подскажите, пожалуйста, может быть ли данная проблема вызвана конфликтом между bootstrap-select.min.js и моими собственными скриптами ?

    Автор Dmitry Kohan

    (@dmay1989)

    Дело в том, что я нигде не обращаюсь в своем коде к bootstrap-select.js, подключаю только bootstrap-select.min.js, ломаю голову откуда берется это подключение и ошибка…

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , ещё раз извиняюсь за беспокойство — нашел в чем причина, но не понимаю от чего так происходит: для оформления списков использую библиотеку bootstrap-select.min.js. Все библиотеки подключаю следующим образом:

    add_action('wp_footer', 'add_scripts');
    if (!function_exists('add_scripts')) {
    function add_scripts() {
    if(is_admin()) return false;
    wp_deregister_script('jquery');
     wp_enqueue_script('jquery', get_template_directory_uri().'/js/jquery-3.2.1.min.js','','',true);
    wp_enqueue_script('bootstrap',get_template_directory_uri().'/js/bootstrap.min.js','','',true);
    wp_enqueue_script('bootstrap_select', get_template_directory_uri().'/js/bootstrap-select.min.js','','',true);
    wp_enqueue_script('js_main', get_template_directory_uri().'/js/main.js','','',true);
    wp_enqueue_script( 'custom', get_template_directory_uri() .'/js/custom.js','','',true );
     wp_localize_script( 'custom', 'myTheme', array('ajaxurl' => admin_url( 'admin-ajax.php' )));
    	}
    }

    Так вот если у моего списка убрать классы selectpicker show-tick , которые использует bootstrap-select.min.js — то всё работает. И при этом когда всё работает в консоли обнаружил ошибку Скрин ошибки:
    Could not load content for http://localhost/wp-content/themes/js/bootstrap-select.js : HTTP status code: 404
    Ещё раз извиняюсь — наверное нужно прописать зависимости моего custom.js от bootstrap-select.js ? или не верно ? не пойму..

    • Ответ изменён 5 лет назад пользователем Dmitry Kohan.
    Автор Dmitry Kohan

    (@dmay1989)

    @yube , ещё раз спасибо. Я близок к решению задачи, но не могу разобраться с последним моментом — как вывести полученные элементы списка <option> в сам список. Если по порядку:
    в functions.php моей темы я подключил свой скрипт след. образом:

    wp_enqueue_script( 'custom', get_template_directory_uri() .'/js/custom.js','','',true );
    wp_localize_script( 'custom', 'myTheme', array('ajaxurl' => admin_url( 'admin-ajax.php' )));

    вот сам custom.js :

    jQuery(document).ready(function ($) {
      var $mainBox = $('#heat_area_name');
      var typeBox = $('#heatAreaType');
      typeBox.change(function(){
            var heatAreaType = $(this).val();
    	jQuery.post(
                myTheme.ajaxurl,
                {
                 action: 'get_city',
                 city: heatAreaType
                 },
                function (response) {
    		alert(heatAreaType);
                    $mainBox.html(response);
                });    
          });
    });

    Для перехвата запроса в functions.php я использую:

    add_action( 'wp_ajax_get_city', 'ajax_show_city' );
    function ajax_show_city() {
        global $wpdb;
        $area_type= $_POST['city'];
        $areas = $wpdb -> get_results("SELECT area_id,area_name FROM dima_ic_area WHERE area_type_id = $area_type");
        foreach ($areas as $area) 
        {
            echo "<script>alert('Value= ".$area -> area_id." Город= ".$area -> area_name." ');</script>";
            echo '<option value="'.$area -> area_id.'">'.$area -> area_name.'</option>';
        }
    	wp_die();
    }

    Через alert все данные из таблиц выводятся, а вот в список, который расположен в author.php :

    <select class="selectpicker show-tick form-control" data-header="Выберите населенный пункт" name="heat_area" id="heat_area_name">
                                        
    </select>

    в этот список ничего не прилетает. Подскажите, пожалуйста, где я ошибся или что-то забыл ? Может быть загвоздка в строке $mainBox.html(response); , но что не так?
    Заранее спасибо за любую помощь

    Автор Dmitry Kohan

    (@dmay1989)

    @yube , спасибо за ответ. Подскажите, пожалуйста, правильно ли я понял: в functions.php моей темы мне нужно прописать следующий код:

    add_action( 'wp_enqueue_scripts', 'my_function' );
    function my_function()
    {
    wp_enqueue_script( 'my-ajax-request', get_template_directory_uri() . '/js/custom_script.js' );//здесь мой JS код указанный выше, отслеживающий изменение <option> в первом списке
    wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); 
    }

    Я так понимаю вместо array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) нужно прописать путь к моему скрипту city.php ?
    ps извините, если написал бред, окончательно запутался

    Ещё раз спасибо!
    Думаю вопрос данной темы решён в полной мере и даже больше. Надеюсь вся информация здесь будет также полезна начинающим вникать в WP в будущем. Тему закрываю.

    Предыдущий вопрос, связанный с установкой WP-Recall, решил на форуме поддержки плагина WP-Recall: https://codeseller.ru/forum/ustanovka-i-nastroyka/posle-ustanovki-plagina-voznikli-oshibki-wp-errorid-i-filemtime-stat-f/
    Прошу прощения, что написал вопрос выше в данной теме по интеграции БД. Но надеюсь возможно кому-то пригодится в будущем.
    В заключение перед закрытием этого топика хочу спросить у @otshelnik-fm , и заранее прошу прощения за беспокойство, вы писали:

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

    Вопрос — подскажите, для функционала по созданию, наполнению, обработке произвольных таблиц и дальнейшей передачи плагину WP-Recall ( WP-Recall позволяет получать из произвольных таблиц через класс RCL_QUERY) лучше создать свой отдельный плагин или же лучше оформить в виде дополнения к плагину WP-Recall ? Или можно оформить как в виде дополнения, так и в виде плагина ?

    Подскажите, пожалуйста, после активации WP-Recall и дальнейшего выхода из админки появляется предупреждение: Notice: Undefined property: WP_Error::$ID in /home/user2077509/www/efp.by/wordpress/wp-content/plugins/wp-recall/functions/authorize.php on line 8
    А при попытке входа в админку появляется варнинг: Warning: filemtime(): stat failed for /home/user2077509/www/efp.by/wordpress/wordpress/wp-content/plugins/wp-recall/add-on/theme-sunshine/img/default-cover.jpg in /home/user2077509/www/efp.by/wordpress/wp-content/plugins/wp-recall/add-on/theme-sunshine/index.php on line 97
    Все другие плагины удалил, поставил ВП тему по умолчанию (Twenty Twenty) — ошибки сохранились.
    Я не правильно активировал WP-Recall ? Или что-то упустил ? подскажите, пожалуйста

    Пожалуй, заключительное для этой темы.
    @wpgear ранее вы писали:

    Для Управления с распределением Прав Доступа, можно попробовать некоторые Плагины, типа Ultimate Members или WP-Recall
    Но скорее всего, учитывая ваши хотелки, проще написать свой Плагин, добавив пару собственных Таблиц.

    и:

    Если вы не предполагаете оформлять свой Проект в виде Плагина, а у меня закрались такие смутные сомнения, то вам вовсе не обязательно использовать для достижения своих Целей функцию dbDelta()

    В результате я пришел к тому, что сейчас разбираюсь с WP-Recall, чтобы использовать его для оформления личного кабинета, и связать его со своим плагином, который в свою очередь занимается созданием моих таблиц и их дальнейшей обработкой и передает таблички WP-Recall для их вывода в ЛК.
    @wpgear хочется услышать и ваше мнение о возможности такой реализации (хотя уже пробую)

    @otshelnik-fm , спасибо за ответы, но видимо мне самому нужно было прийти к этому, т.к. на данном этапе я всё действительно пихал в functions.php — в том числе и создание своих таблиц (привязывал их к хуку after_switch_theme). Теперь понял, что оформлением личного кабинета должен заниматься WP-Recall (как вы писали — это экономит время, не нужно заботиться о многих вещах в ЛК, регистрации, логине, вкладках и т.д.), созданием своих таблиц и их дальнейшей обработкой должен заниматься мой плагин, а тема должна заниматься только внешним оформлением. Осталось разобраться с WP-Recall и «подружить» его с моей темой и плагином.

    Юрий ( @yube ), по поводу:

    Почему бы не создавать таблицы при активации того, где будет размещен код создания (и, вероятно, использования) таблиц?

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

Просмотр 15 ответов — с 121 по 135 (всего 149)