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

  • Не могу разобраться с запросом таксономии. Как то раньше с этим не сталкивался.
    Сайт по недвижимости у которого есть разделение на аренду, продажу и т.д.. Сейчас на страницу подгружаются вся недвижимость в отведенную область. Нужно создать 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».

    Автор ART_STAR

    (@art_star)

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

    Автор ART_STAR

    (@art_star)

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

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

    Автор ART_STAR

    (@art_star)

    Да вроде об этом, только когда этого не делал никогда мысли друг друга нафиг посылают).
    Мне нужно отфильтровать все имеющиеся значения по «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')
    
    ));

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

    Автор ART_STAR

    (@art_star)

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

    Автор ART_STAR

    (@art_star)

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

    Автор ART_STAR

    (@art_star)

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

    Автор ART_STAR

    (@art_star)

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

    Автор ART_STAR

    (@art_star)

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

    <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),
    ));

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

    Автор ART_STAR

    (@art_star)

    Что имеется ввиду под словом «там»? а то я тут уже много чего накидал))
    Если последний файл с пхп запросом, то потому что документ из которого сделан копипасть называется 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 );

    Автор ART_STAR

    (@art_star)

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

    <?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 );

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

    Автор ART_STAR

    (@art_star)

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

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