Поддержка Проблемы и решения Не могу разобраться с таксономией

  • Не могу разобраться с запросом таксономии. Как то раньше с этим не сталкивался.
    Сайт по недвижимости у которого есть разделение на аренду, продажу и т.д.. Сейчас на страницу подгружаются вся недвижимость в отведенную область. Нужно создать 3и области на странице, в каждую из которых будет подгружаться соответсующая недвижимость(Аренда, продажа и др.). Как я понимаю это нужно сделать с помощью добавления запроса в пхп. Как сделать данный запрос?

    <?php

    global $wp_query;

    echo View::render(‘archive-property.twig’, array(
    ‘title’ => $wp_query->queried_object->name,
    ‘wp_query’ => $wp_query,
    ‘properties’ => _aviators_properties_prepare($wp_query),
    ));

Просмотр 15 ответов — с 1 по 15 (всего 20)
  • http://wp-kama.ru/function/wp_query
    http://codex.wordpress.org/Class_Reference/WP_Query
    В частности раздел «Taxonomy Parameters».

    Да, я видел эти сайты, они у меня и так сейчас открыты, как пособие). А еще вот http://indysite.ru/manuals/taxonomies-of-wordpress/ — тоже довольно содержательный. Только тут история из разряда «смотрю в книгу…», как и писал, раньше не сталкивался, поэтому логику до конца не пойму. Что и как мне нужно поменять? запрос в таксономии? или вставить пхп запрос в формировании страницы с if ?

    я правильно понимаю, что мне нужно ввести фильтр к global $wp_query; и получить таким образом $query = new WP_Query( $args ); если следовать примерам?

    Определяете параметры выборки в массиве $args, созданете новый объект WP_Query, выводите данные, если они есть, на странице циклом. Это о стандартном запросе с выборкой по таксономии, подробнее по ссылкам. Если у вас что-то другое, извините.

    Да вроде об этом, только когда этого не делал никогда мысли друг друга нафиг посылают).
    Мне нужно отфильтровать все имеющиеся значения по «property_contracts» с тремя вариантами значений: ‘Аренда’, ‘Продажа’, ‘Бизнес’.
    Содержание таксономии в первом посте, а шаблона страници вот:

    <?php
    /**
     * Template Name: Properties Grid Template
     */
    global $wp_query;
    
    $rows = aviators_settings_get_value('properties', 'homepage', 'rows');
    $cols = aviators_settings_get_value('properties', 'homepage', 'cols');
    $type = aviators_settings_get_value('properties', 'homepage', 'type');
    $shuffle = aviators_settings_get_value('properties', 'homepage', 'shuffle_results');
    
    $do_shuffle = FALSE;
    if ($shuffle == 'on') {
        $do_shuffle = TRUE;
    }
    
    switch ($type) {
        case 'reduced':
            $posts = aviators_properties_get_reduced($rows * $cols, $do_shuffle);
            break;
        case 'featured':
            $posts = aviators_properties_get_featured($rows * $cols, $do_shuffle);
            break;
        default:
            $posts = aviators_properties_get_most_recent($rows * $cols, $do_shuffle);
            break;
    }
    
    echo View::render('page-properties-grid(origin).twig', array(
         'wp_query' => $wp_query,
         'posts' => $posts,
    
    ));

    Я попробовал сделать следующую запись пока для фильтрации по одному их слагов:

    <?php
    /**
     * Template Name: Properties Grid Template
     */
    $wp_query = new WP_Query( $args );
    $args = array ( 'post_type'=>array('taxonomy' => 'property_contract',
    			'terms' => array('sold'),
    ));
    
    $rows = aviators_settings_get_value('properties', 'homepage', 'rows');
    $cols = aviators_settings_get_value('properties', 'homepage', 'cols');
    $type = aviators_settings_get_value('properties', 'homepage', 'type');
    $shuffle = aviators_settings_get_value('properties', 'homepage', 'shuffle_results');
    
    $do_shuffle = FALSE;
    if ($shuffle == 'on') {
        $do_shuffle = TRUE;
    }
    
    switch ($type) {
        case 'reduced':
            $posts = aviators_properties_get_reduced($rows * $cols, $do_shuffle);
            break;
        case 'featured':
            $posts = aviators_properties_get_featured($rows * $cols, $do_shuffle);
            break;
        default:
            $posts = aviators_properties_get_most_recent($rows * $cols, $do_shuffle);
            break;
    }
    
    echo View::render('page-properties-grid(origin).twig', array(
         'wp_query' => $wp_query,
         'posts' => $posts,
         'post_type'=> arrey('property&property_contract=sale')
    
    ));

    что я сделал не так?

    Слаг — солд так же есть как вид недвижимости, просто я его не перечислял ранее, т.к. в конечном варианте сайта он будет удален. Но для теста вписал его.

    и если честно — не вижу связи формирования страницы с таксономией…они связаны, или таксономия(как я изначально думал) здесь вообще не причем для формирования страницы?

    На странице, в формате.twig которая создает внешний вид нужной мне страници, я ссылок на таксономию не вижу. Наоборот, в таксономии есть ссылка на файл твиг, но откуда он узнает в какой области какой фильтр мне нужен? (их 3-и)

    Получается в твиг файле, который формирует страницу, вид которой мне нужно дополнить 3мя разными типами контрактов, мне нужно допонительно прописать фильтр пхп с помощью вп_запроса? Как это сделать? подскажите… толи ночь длинная, толи бубен доставать нужно.

    то что формирует посты на главной странице:

    <div class="span3">
                {% include 'properties/property-box-small.twig' with {'property': post} %}
            </div>

    в частности {‘property’: post}.
    Нужно его переделать , чтобы он брал недвижимость не всю подряд, а именно которую нужно. Как это прописать если мои данные таксометрии по типу контракта:

    <?php
    
    global $wp_query;
    
    echo View::render('archive-property.twig', array(
        'title' => $wp_query->queried_object->name,
        'wp_query' => $wp_query,
        'properties' => _aviators_properties_prepare($wp_query),
    ));

    Почему вы так уверены, что это там таксономии?

    Что имеется ввиду под словом «там»? а то я тут уже много чего накидал))
    Если последний файл с пхп запросом, то потому что документ из которого сделан копипасть называется taxonomy-property_contracts.php
    А еще потому что в админ панели есть возможность добавления типа контракта и вывода всех постов по типу контракта. Адрес на такой запрос:
    /edit-tags.php?taxonomy=property_contracts&post_type=property
    /edit.php?property_contract=sold&post_type=property
    и потому что в теме есть файл пропертис со следующим кодом:

    function aviators_properties_create_taxonomies() {
      $property_contracts_labels = array(
        'name' => __('Contract Types', 'aviators'),
        'singular_name' => __('Contract Type', 'aviators'),
        'search_items' => __('Search Contract Types', 'aviators'),
        'all_items' => __('All Contract Types', 'aviators'),
        'parent_item' => __('Parent Contract Type', 'aviators'),
        'parent_item_colon' => __('Parent Contract Type:', 'aviators'),
        'edit_item' => __('Edit Contract Type', 'aviators'),
        'update_item' => __('Update Contract Type', 'aviators'),
        'add_new_item' => __('Add New Contract Type', 'aviators'),
        'new_item_name' => __('New Contract Type', 'aviators'),
        'menu_name' => __('Contract Type', 'aviators'),
      );
    
      register_taxonomy('property_contracts', 'property', array(
        'labels' => $property_contracts_labels,
        'hierarchical' => TRUE,
        'query_var' => 'property_contract',
        'rewrite' => array('slug' => __('property-contract', 'aviators')),
        'public' => TRUE,
        'show_ui' => TRUE,
      ));

    Ну раз таксономия, чем не устраивает стандартный пример

    $args = array(
         'post_type' => 'property',
         'property_contracts' => 'rent',
         'posts_per_page' = 3
    );
    $query = new WP_Query( $args );

    Меня устраивает. Но не работает.
    Мои варианты из этой же серии:

    <?php $query = new WP_Query( array( 'property_contracts' => 'rent' ) ); ?>

    и

    $args = array(
    	'tax_query' => array(
    		array(
    			'taxonomy' => 'property_contracts',
    			'field' => 'slug',
    			'terms' => 'rent'
    		)
    	)
    );
    $query = new WP_Query( $args );

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

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

Просмотр 15 ответов — с 1 по 15 (всего 20)
  • Тема «Не могу разобраться с таксономией» закрыта для новых ответов.