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

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Частично разобрался с проблемой. Точнее с метками для шаблона. А вот что за ключи — так и осталось неясным.

    Спасибо за ответ! А есть какое-либо решение без плагин? Функция, которую можно написать в function.php ???

    Просто если бы подгрузка была бы со статичной страницы — думаю проблем бы не возникло.
    В моем же случае все немного сложнее. Есть отдельная страница page-services.php с кодом:

    <?php $our_service_two = new WP_Query(array('post_type' => 'our_service'));?>
    <?php if ( $our_service_two->have_posts() ) : ?>
    	<div id="service-block">
    <?php while ( $our_service_two->have_posts() ) : $our_service_two->the_post(); ?>
    					
    	<a href="<?php the_permalink();?>"><?php the_post_thumbnail(); ?></a>
    	<a href="<?php the_permalink();?>"><?php the_title();?></a>
    
    <?php endwhile; ?>
    	</div>
    <?php else: ?>
    	<div class="no-service">...</div>
    <?php endif; ?>
    <?php wp_reset_query(); ?>

    И при нажатии на ссылку <?php the_permalink();?> происходит переход на содержимое страницы single-our_service.php

    То-есть нужно чтобы содержимое страницы single-our_service.php открывалось не в отдельном окне, а появлялось где-нибудь сбоку с подробностями об услуге.
    Пример того, чего хочу достичь на этом сайте https://www.itlook-salon.ru/ если перейти на страницу конкретного сотрудника.

    Автор LLIypuk

    (@lliypuk)

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

    В итоге в function.php написал код:

    add_filter('single_template', 'dh_comments_template');
    function dh_comments_template($template) {
        global $wp_query;
        if ( $_GET['comments'] == '1' and
            file_exists(TEMPLATEPATH . '/single-comments.php') )
                $template = TEMPLATEPATH . '/single-comments.php';
        return $template;
    }

    а в файле шаблона page-personal.php разместил ссылку:
    <a href="<?php get_permalink()?>?comments=1">Показать комментарии</a>

    Но результат не работает.
    Пример реализации взял тут: http://dreamhelg.ru/2009/02/wordpress-comments-on-a-separate-page/

    Как я понял все это надо спрашивать уже в другой теме.

    Согласен. Только вот сомневаюсь что заказчик будет постоянно обновлять WordPress. Поэтому пытаюсь сделать все хотя бы с помощью подхода «security by obscurity» чем вообще никак.

    Автор LLIypuk

    (@lliypuk)

    Все. Разобрался.

    $term_slug = get_query_var('term'); - получает slug таксономии.
    $taxonomy = get_query_var('taxonomy'); - получает имя зарегестрированной таксономии
    $term = get_term_by( 'slug', $term_slug, $taxonomy ); - получаем элемент таксономии
    $term_id = $term->term_id; - выводим его ID

    Таким образом запрашивая элементы терминов можно указать параметру child_of переменную содержащую текущий идентификатор родительской рубрики и в итоге получаем список тех рубрик, которые относятся к определенной таксономии (рубрики), посты которой выводятся на странице.
    $terms = get_terms($taxonomy, array( 'child_of' => $term_id ) );

    • Ответ изменён 7 лет назад пользователем LLIypuk.
    Автор LLIypuk

    (@lliypuk)

    Хорошо. Попробую еще раз сформулировать.

    1. Создал произвольные типы записей и для них зарегистрировал таксономии (название зарегестрированных таксономий «our_personal»).
    2. Далее через админку создал рубрики «руководство», «директора», «менеджеры».
    3. Рубрикам «директора», «менеджеры» указал чтоб родительской для них будет рубрика «руководство».
    4. Cоздал файл taxonomy-personal.php и в файле настроил вывод постов через new WP_Query.
    5. Разместил рубрику «руководство» в меню сайта и соответственно на странице получаю всех сотрудников из рубрик «директора».
    6. И, соответственно, внутри этого файла нужно вывести меню с рубриками «директора» и «менеджеры». (то же самое будет относится и для других рубрик. родительская рубрика в меню, а рубрики принадлежащие родительской — на странице, куда выводятся посты родительской рубрики).

    Как я понял родительские посты имеют свой собственный идентификатор. Если указать его в параметре child_of ,то я получу всех «детей» указанной рубрики.

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

    Таким образом, выводя на странице посты родительской рубрики, мы также выводим на этой странице и список дочерних рубрик.

    Автор LLIypuk

    (@lliypuk)

    Спасибо. Работает. Однако удается выводить только определенные таксономии для всех страниц разом. То-есть существует родительская таксономия с ID=7. Указываю ‘child_of’ => 7, и в итоге получаю дочерние таксономии от родительской у которой ID=7. Но выводятся они для всех страниц сразу.

    То-есть получается что надо сделать так, чтобы функция определяла — посты какой именно родительской таксономии выводятся на странице. Вывести ее в переменную и эту переменную присвоить параметру функции child_of.

    Нашел в сети примерный код, но пока не разобрался как с помощью него справится с задачей.

    <?php // пока что у нас есть возможность получить ярлык текущего элемента таксономии и название самой таксономии
    $taxonomy_slug = get_query_var('term');
    $taxonomy = get_query_var('taxonomy');
     
    // затем уже можно получить ID
    $term = get_term_by( 'slug', $taxonomy_slug, $taxonomy );
    $term_id = $term->term_id;
     
    // и потом уже выводим через get_terms() :)
    $children = get_terms($taxonomy, array( 'child_of' => $term_id ) ); 
    ?>

    Все работает. Спасибо!

    А точно. Пункт 2 нарушил. Сорри. Создам новую тему.

    Спасибо. Действительно самый простой и действенный вариант.
    И чтобы не созданать лишнюю тему — есть еще один вопрос по схожей теме.
    На одной из страниц возникла необходимость вывести список рубрик (таксономий), которые оформлены в виде меню

    	$terms_personal = get_terms("personal");
    	$count = count($terms_personal);
    	if($count > 0){
    		echo '<ul id="personal">';
    			foreach ($terms_personal as $term_workman) {
    				echo "<li>" . $term_workman->name . "</li>";
    			}
    		echo '</ul>';
    	}

    Таким образом получаем список рубрик

    <ul id="personal">
      <li>Администраторы</li>
      <li>Консультанты</li>
      <li>и т.д.</li>
    </ul>

    Однако есть необходимость чтобы первый пункт меню li содержал в себе class=»active», который в свою очередь исчезал и появлялся при переходе на другой пункт меню.

    (вариант при запуске страницы)

    <ul id="personal">
      <li class="active">Администраторы</li>
      <li>Консультанты</li>
      <li>и т.д.</li>
    </ul>

    (вариант при переходен на вкладку «Консультанты»)

    <ul id="personal">
      <li>Администраторы</li>
      <li class="active">Консультанты</li>
      <li>и т.д.</li>
    </ul>
    • Ответ изменён 7 лет, 1 месяц назад пользователем LLIypuk.

    riskful спасибо!!! все работает!

    То-есть чтобы добиться результата — надо цикл Вордпресс (WP_Query) выводить через другой файл??? а именно taxonomy-$taxonomy-$term.php???
    PS: Создал файл c именем taxonomy-our_services.php и закинул содержимое «page-service.php» в него. Однако все равно ошибка 404.

    В целом можно попробовать еще через taxonomy-$taxonomy-$term.php вывести. Однако и в данном случае та же ошибка. И да тут получается что надо создавать для каждой рубрики свой шаблон, хотя в итоге это не совсем то что нужно, так как в идеале пытаюсь сделать так, чтобы пользователь создал свой страницу с существующим циклом Вордпресс по алгоритму:

    Зашел в рубрики произвольных типов записей -> Создал свою рубрику-> Создал свои посты в произвольных типах записей и указал рубрику при создании постов -> Через «Внешний вид-Меню» разместил рубрику в главном меню -> Перейдя по ссылке рубрики через сайт получил слайдер с теми записями, которые отмечены для выбранной рубрики.

    Решил проблему добавлением posts_per_page в массив произвольного типа записи, который создан с помощью register_post_type.

    К сожалению код не сработал. Попробовал еще вот так использовать код:

    add_action('pre_get_posts', 'alter_query');
    function alter_query($query) {
        if (!is_admin() && $query->is_main_query() && $query->is_archive && $query->is_post_type_archive('здфндшые') ) {
                $query->set('posts_per_page', 1);
        }
    }

    Но так тоже не работает.
    Вообщем как я понял изменить количество записей можно через хук «pre_get_posts» буду искать информацию в поиске по нему.

    Спасибо за возможное решение, но к сожалению оно не сработало. То-есть цикл продолжает работать, но иакже как и до изменений. То-есть ничего не изменилось.
    Собственно сам сайт http://fishboneproject.com/ — в нем в разделе «проекты» два варианта слайдера
    1. статичный вариант с красными картинками, который собственно в данный момент работает так, как надо.
    2. второй вариант (7 цветных картинок) — это уже сам цикл вордпресса и он не работает как надо.

    PS: Также застрял на моменте вывода постов определенных категорий (таксономий). Сами ссылки выводятся путем функции <?php wp_list_categories() ?> и расположены вверху страницы (DIGITAL ART, и другие ссылки, которые являются категориями) и по сути должны вести к постам, которые относятся к конкретной категории. Однако этого не происходит. Сами категории и типы постов произовольные. Собственно как я понял — надо создать файл с определенным именем и расширением .php и прописать там стандартный цикл WPю Однако на других ресурсах предлагают просто выводить посты определенный категории. В моем случае при создании категории должна появляться ссылка на категорию и при переходе по ссылке должен открываться шаблон с постами этой категории.

    PPS: Также всем заранее спасибо за помощь.

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