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

Просмотр 15 ответов — с 31 по 45 (всего 149)
  • понял, @yube , спасибо, значит при деактивации темы с кастомными записями и таксономиями ничего делать не нужно. А вот по поводу терминов, Вы писали:

    Однако, записи, термы и реляции хранятся в базе, а потому существуют даже тогда, когда самого движка нет в царстве живых (нет обращений к сайту).

    Я пытаюсь добавить новые термины кастомной таксономии при помощи wp_insert_term() после активации темы (after_switch_theme()), а при деактивации темы удалять эти термины во время switch_theme(). Но ничего не выходит, и ошибки не появляются при активации/деактивации темы. Подскажите, пожалуйста, где я ошибся, во время какого события правильно будет вставлять/удалять термины ?

    @yube , подскажите ещё, пожалуйста, если я регистрирую свои записи и таксономии во время события init в functions.php темы, нужно ли отменять регистрацию этих записей и таксономий — unregister_post_type() и unregister_taxonomy() — при деактивации темы ?

    @yube , подскажите, пожалуйста, нигде не могу найти ответ — первоначально нужно регистрировать свой тип записи при помощи register_post_type(), а только затем таксономии при помощи register_taxonomy(), которые будут привязаны к данному типу записи или же наоборот — первоначально нужно регистрировать таксономии, а только затем тип записи, к которому данные таксономии будут прикреплены ?

    @yube , еще раз прошу прощения за беспокойство, по поводу верстки для меню в виджете Вы писали:

    Как везде — через css.

    Я видимо не могу уловить самого главного — я создаю меню в админке, привязываю его к виджету, но как мне узнать css-классы генерируемого меню ? как узнать css-класс виджета поиска? через консоль браузера http://prntscr.com/uawnrl?
    т.е. получается wp_nav_menu() позволяет добавить к меню свои классы и идентификаторы, чтобы сверстать как тебе нужно, а правильнее и проще будет переопределять стили для классов и идентификаторов, которые WP генерирует сам. Я правильно Вас понял ?

    Понял, спасибо!! @yube , Вы писали:

    Среди штатных виджетов есть виджет «навигационное меню», в котором можно вывести любое из имеющихся (созданных) меню.

    А как в данном случае задать свою верстку для меню в виджете, как применить wp_nav_menu() ? для виджетов наверное есть отдельный механизм (виджету «Поиск» также нужно задать свою верстку). Не подскажете как действовать в данном случае ?

    @yube , я прошу прощения, Вы не подскажете, могу ли я меню, созданное в wp_nav_menu(), разместить в сайдбаре, в котором имеется один или несколько виджетов ? или отдельно создается меню и отдельно под ним виджеты в сайдбаре? не могу сообразить… (извиняюсь, если вопрос показался странным — на сайте без CMS данный блок с меню и записями оформлен цельным блоком и присутствует на всех страницах: http://prntscr.com/uasm0j. Как правильнее его реализовать в концепции WP ? )

    Может я чего-то не понимаю… вот мой неактивированный плагин: http://prntscr.com/u6sopm, а вот форма, которую я прописал в файле плагина: http://prntscr.com/u6srg8

    @yube , я прошу прощения, описанный выше функционал импорта данных из файлов CSV в базу данных пытаюсь добавить при помощи функции add_menu_page() следующим образом:

    add_action( 'admin_menu', 'register_import_csv' );
    function register_import_csv(){
    add_menu_page( 'Импорт из CSV', 'Импорт из CSV', 'manage_options', 'import_csv/import_csv.php', '', 'dashicons-database-import', 81 );
    }

    Код страницы расположен в файле плагина import_csv.php . То что я прописал в файле отображается и без активации плагина.
    Подскажите, пожалуйста, сам плагин при этом получается не нужно активировать ?

    @yube , еще раз спасибо. Создаю структуру будущего каталога и закралась мысль о будущем наполнении таблиц wp_posts, wp_postmeta, wp_term, wp_termmeta данными о товарах, организациях и т.п. Думаю не комильфо заполнять 2500 товаров и 1000 организаций ручками, если имеется готовый массив данных в Excel и его можно перевести в формат CSV. Вопрос в том, как реализовать данный алгоритм для WP. Ранее, когда я учился и писал сайты на php без CMS, я через форму брал файл, проверял его формат, и если все ОК — читал строки из файла при помощи fgetcsv() и полученный массив записывал в БД. Подскажите, пожалуйста, можно ли что-то подобное реализовать в админке WP ? — Т.е. добавить новую вкладку или нечто подобное (еще не приходилось добавлять какой-либо функционал в админку WP), а в ней создать форму c <input type='file' />, а далее обрабатывать файл при помощи все той же fgetcsv() и полученные данные записывать в БД при помощи wp_insert_post(), wp_insert_term(), update_post_meta(), update_term_meta(). Подскажите, пожалуйста, будет ли работать данный алгоритм в админке WP, и как в принципе, если можно, добавить данный функционал в админку ?
    Ниже, вряд ли конечно пригодится, но привожу фрагмент своего кода, которым я обрабатывал файлы CSV и записывал данные из них в БД:

    <?php
    if (isset($_POST['submit']) && $import=='bel') {
        if ($_FILES) {
            $name = $_FILES['filename']['name'];
            if ($_FILES['filename']['type']=='application/vnd.ms-excel') {
                move_uploaded_file($_FILES['filename']['tmp_name'], $name);
                echo "<h4 class='available'>FILE is LOADED: '$name'</h4>";
                $type='application/vnd.ms-excel';
            }
            else {
                    echo "<h4 class='taken'>FILE has not correct format or not exists</h4>"; exit();
                 }
        } else echo "<h4 class='taken'>Loading did NOT happen</h4>";
        if ((file_exists("$name")) && ($type)) {
                echo "<h4 class='available'>OK - FILE has correct format</h4>";
                $rowsCount = 100;
                $insertStmt = 'Insert into statistics_rb (parameter,parameter_unit,id_2010,id_2011,id_2012,id_2013,id_2014,id_2015,id_2016,id_2017,id_2018) values ';
                $row = 1;
                if (($handle = fopen("$name", "r")) !== FALSE) {
                    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                        $num = count($data);
    					$row++;
                        if ($row > 2) {
    						$data_final = array_map('htmlentities', $data);
    						$rowsToInsert[] = '("' . implode('","', $data_final) . '")';
    						if ($rowsCount <= count($rowsToInsert)) {
    							$insertStmt_final = $insertStmt . implode(', ', $rowsToInsert);
    							$result=$conn->query($insertStmt_final);
    							$rowsToInsert = array();
    						}
                        }
                    }
                    if (!empty($rowsToInsert)) {
                        $insertStmt_final = $insertStmt . implode(', ', $rowsToInsert);
                        $result=$conn->query($insertStmt_final);
                        $rowsToInsert = array();
                    }
                    fclose($handle);    
                }
    	}
    }			

    Понял, спасибо большое за совет. @yube , позвольте также спросить — есть ли какое-то ограничение по количеству на создание своих типов записей и таксономий к ним ? В моем случае, кроме Товаров, некоторым Организациям будут принадлежать также некоторые Вакансии и Услуги, которые они предлагают (ну и мало ли появится что-то еще))) т.к. товары, вакансии и услуги являются разными сущностями, я ведь могу для удобства выборок создать отдельными типами записей и Товары, и Вакансии, и Услуги и соответственно к каждому типу записи создать свои таксономии (где-то общие для всех, а где-то индивидуальные для каждого типа записи) ?

    @yube , можно ещё попросить Ваш совет по поводу таксономий — производители и поставщики. Выше Вы писали:

    Это обусловлено способом хранения данных в БД. То есть, товары — записи, производители и поставщики — таксономии.

    В моем случае у 80% товаров (всего в БД около 2500 товаров, их количество расти не будет) известны только поставщики, в остальных 20% случаях производитель одновременно является поставщиком (всего в справочнике около 1000 уникальных организаций). Подскажите, пожалуйста, лучше Производители и Поставщики оформлять как отдельные таксономии и ничего страшного что эти 20% организаций будут дублироваться в термах двух созданных таксономий, или же лучше делать одну таксономию «Организации» и далее определять по мета-полю каждой термы в wp_termmeta является организация поставщиком или производителем или и тем и тем одновременно ?

    Понял, @yube , еще раз спасибо) буду в указанном Вами ключе продумывать структуру записей и таксономий. Можно ещё вопрос: теоретически я могу в wp_postmeta прописывать несколько цен товара, а идентифицировать каждую цену отдельного продавца по meta_key, где meta_key будет слагом соответствующей термы продавца? Ну и соответственно meta_value будет ценой данного продавца, по слагу в meta_key таким образом определю продавца, или такой подход в корне неправильный и цену по meta_key таким образом не удастся идентифицировать с продавцом?

    @yube , спасибо огромное!) Получается один товар (т.е. одна запись из wp_posts) может быть связан с энным количеством записей из wp_terms (т.е. с продавцами). Но вопрос по поводу цены товара — цена товара устанавливается продавцом, а один товар могут продавать несколько продавцов и каждый продавец по своей цене, не пойму как в wp_postmeta задать несколько цен одному товару и привязать каждую цену к определенному продавцу?

    @yube , спасибо Вам огромное за помощь и терпение ! Буду дальше разбираться, а вопрос данной темы решен в более чем полном объеме, не только касательно хранения данных в wp_posts и wp_postmeta, но и их извлечения, дальнейшей обработки и даже экспорта. Содержание данной темы буду использовать как инструкцию.
    @yube , ещё раз огромное Вам спасибо за ответы и помощь !

    @yube , в любом случае спасибо огромное, буду разбираться

Просмотр 15 ответов — с 31 по 45 (всего 149)