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

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Нашёл проблему:

    В файле style.css заремил вот этот кусок и карта стала отображаться во всех браузерах.

    /* Images */
    .entry-content img,
    .comment-content img,
    .widget img {
    	max-width: 97.5%;
    }

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

    #content .yaMap img {
    	max-width: none;
    }

    Уточнение:
    query_var — этот параметр определяет имя переменной, которая будет отвечать в запросе за отбор нашей таксономии. Т.е. при такой записи ‘query_var’ => ‘name_var’, необходимо подправить код:

    1) 'name' => 'name_var' — это при формировании списка
    2) $request['name_var'] = get_term($request['name_var'],TAXONOMY_TYPE)->slug — это при замене term_id на slug
    3) 'selected' => $_GET['name_var']

    ВСЁ — РАЗОБРАЛСЯ!!!!

    Привожу здесь тот пример который работает у меня:

    //Добавляем пользовательскую таксономию
    add_action( 'init', 'build_taxonomies', 0 );
    function build_taxonomies() {
    
    	$args = array(
    		'hierarchical' => true
    		,'label' => 'Все типы'
    		,'query_var' => true
    		,'public' => true
    		,'show_in_nav_menus' => true
    		,'show_ui' => true
    		,'rewrite' => true
    	);
    
    	register_taxonomy( TAXONOMY_TYPE, NAMEPOSTTYPE, $args );
    }
    
    //Добавляем выподающий список типов недвижимости для фильтра
    add_action("restrict_manage_posts", "ki_property_dropdown_property_type");
    function ki_property_dropdown_property_type(){
    
    global $post_type;
    //global $typenow; //тоже значение что и $post_type
    global $wp_query;
    
    if ( is_object_in_taxonomy( $post_type, TAXONOMY_TYPE ) ) {
    	$dropdown_options = array(
    	'show_option_all' => 'Вся недвижимость',
    	'taxonomy' => TAXONOMY_TYPE,
    	'name' => TAXONOMY_TYPE,
    	'orderby' => 'name',
    	'selected' => $_GET[TAXONOMY_TYPE],
    	'hierarchical' => true,
    	'depth'           =>  3,
            'show_count'      =>  true, // Show # listings in parens
            'hide_empty'      =>  false // показывать даже пустые пункты
    );
    wp_dropdown_categories( $dropdown_options );
    }
    }
    
    //этот код нужен чтобы работала фильтрация по пользоваттельскому типу
    add_action( 'request', 'my_request' );
    function my_request( $request ) {
    
    if ( is_admin() && $GLOBALS['PHP_SELF'] == '/wp-admin/edit.php' && isset($request['post_type']) && $request['post_type']==NAMEPOSTTYPE ){
    
    $request[TAXONOMY_TYPE] = get_term($request[TAXONOMY_TYPE],TAXONOMY_TYPE)->slug
    }
    	return $request;
    }

    Как это работает:
    1) При создании пользовательской таксономии не забываем параметр ‘query_var’ => true — это добавит в запрос к базе данных новую переменную, по которой можно будет выбирать нужные нам записи, соответственно в массиве $request также появится переменная имя которой будет название вашей таксономии т.е. запись $request[TAXONOMY_TYPE] — станет актуальной.

    2) Создаём выпадающий список с перечнем значений нашей таксономии с помощью хука restrict_manage_posts и встроенной функции wp_dropdown_categories, на что обращаем внимание:
    — ‘taxonomy’ и ‘name’ — должны быть равны и содержать имя вашей таксономии в моём случае TAXONOMY_TYPE;
    — ‘selected’ я приравнял к $_GET[TAXONOMY_TYPE], т.к. значения списка являются целыми числами, а не значения slug, благодаря этому мой список помнит последнее значение;

    3)Вешаем функцию my_request(), которая перед тем как обратится к базе данных и выдать нужные нам записи на основе выбранного значения узнает значение slug, и подставит его вместо term_id.

    Пример приведенный выше отказывался у меня работать пока я не поменял $request[‘term’] на $request[TAXONOMY_TYPE]. Подозреваю, что массив $request — формируется где то выше, и содержит все значения переменных которые получает сервер $_GET, а возможно и $_POST. Где это происходит я в коде WordPress не нашёл.

    Этот код работает при фильтрации по нескольким пользовательским таксономиям!!!

    Много информации почерпнул вот по этому адресу wordpress.stackexchange.com, пример большой, всё расписано, но и он, как есть, у меня не заработал (не заработала именно фильтрация).

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

    Гуру, кто опытный — объясните пожалуйста пример который здесь приведён. Пытаюсь сделать фильтрацию пользовательского типа в админке по пользовательской таксонимии, но по данному примеру не работает.

    add_action('restrict_manage_posts','my_restrict_manage_posts');
    function my_restrict_manage_posts() {
     global $typenow;
     if ($typenow=='projektid'){//если работаем с пользовательским типом
      $args = array(
       'show_option_all' => "Show All Categories",//лейба когда фильтрации нет
       'taxonomy'  => 'kategooriad',//имя пользовательской таксономии
       'name'  => 'kategooriad'//имя поля формы
      );
     wp_dropdown_categories($args);//тогда добавляем выпадающий список с перечнем пунктов нашей таксономии
     }
    }

    Первая часть кода мне понятна — вешаем выпадающий список, как это работает можно подсмотреть в файле «class-wp-posts-list-table.php» с 213 по 223 строку.

    А вот функция function my_request($request) мне не понятна. Что значит эта строка:

    $request['term'] = get_term($request['kategooriad'],'kategooriad')->slug;

    Откуда берёться массив $request, и как повлияет на фильтрацию записей присвоение такое выражение например $request['term']=my-type

    У меня не работает и вот с таким вариантом:
    edit.php?kategooriad=my-type&post_type=projektid

    где my-type это одно из значений моей таксономии, просто ни чего не фильтруется, как будто бы нет фильтра вообще.

    vjpo спасибо за помощь, разобрался. В принципе я делал всё как по второй ссылке, только обратил внимание на код по которому к полю ввода добавляется календарик:

    jQuery(document).ready(function(){
    		jQuery('.mydatepicker').datepicker({
    			dateFormat : 'yy-mm-dd'
    		});
    	});

    А я код брал с сайта http://jqueryui.com — там вот такой пример:

    $(function() {
    		$( "#datepicker" ).datepicker();
    	});

    В этом то и была причина. В интернете нашёл что, чтобы работала функция $() в различных CMS лучше оборачивать JQuery скрипты вот в такую конструкцию:

    (function ($) {
      // All your code here
    }(jQuery))

    или везде менять $ на jQuery

    Так что теперь календарик версии jquery-ui-1.8.15 работает со стандартными библиотеками jQuery, которые имеются в WordPress 3.2.1. Всё работает без конфликтов.

    В продолжение темы о подключении jQuery

    Есть WordPress 3.2.1

    Для произвольного поля дата страницы в админке нужно было сделать datepicker, так как в \wp-includes\js\jquery такого модуля не нашёл, то скачал с сайта последнюю версию jQuery UI, в листинге своего плагина я указал:

    /* Цепляем более новую библиотеку jquery 1.6.2*/  
        wp_deregister_script('jquery');  
        wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"), false, '1.6.2');  
        wp_enqueue_script('jquery');  
      
    /* Цепляем код диалога и календарика */  
        wp_register_script('jquery-ui-dialog.datepicker', (agro_tender_PLUGIN_URL."js/jquery-ui-1.8.15.dialog.datepicker.js"), false, '1.8.15');  
        wp_enqueue_script('jquery-ui-dialog.datepicker');

    Столкнулся со следующей проблемой — всё работает, кроме конструктора Меню в разделе Внешний Вид, а точнее не работает drug-and-drop, консоль JS выдаёт вот такое сообщение:

    load-scripts.php:11 - Uncaught ReferenceError: jQuery is not defined
    
    jquery-ui-1.8.15.dialog.datepicker.js:29 - Uncaught TypeError: undefined is not a function

    Если оставить jquery 1.6.1 — который идёт по умолчанию в этой вервии WordPress то не работает datepicker, консоль JS выдаёт такую ошибку

    Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function

    Хотя на сайте http://jqueryui.com/ сказано что jQuery UI 1.8.15 должен работать с jQuery 1.3.2+

    Буду признателен за помощь.

Просмотр 6 ответов — с 1 по 6 (всего 6)