У меня есть веб-сайт, на котором есть блог и пользовательский тип записи с именем proyecto
.
Они находятся на mywebpage.com/blog
и mywebpage.com/portafolio
. На каждой из этих страниц есть поле поиска и раскрывающийся список категорий. .
Каждая страница должна только искать и фильтровать соответствующие сообщения. Также у каждого из них есть свой макет результатов поиска. Если я на mywebpage.com/portafolio
, в результатах поиска должны отображаться только результаты типа proyecto
с его пользовательским макетом. То же самое относится и к тому, что когда я выбираю только категорию из выпадающего списка (и ничего не набираю), он должен отображать только сообщения типа proyecto
, для которых выбрана категория, и только категории, назначенные proyecto
типам сообщений, снова с свой собственный макет.
В данный момент работает фильтр поиска и категории (я даже не уверен, работает ли он должным образом), но он объединяет оба результата (или не показывает их все) и отображает их только с post
дизайн макета ... и когда я ищу пустой поиск, он всегда отображает все сообщения proyecto
и некоторые результаты post
с макетом proyecto
.
Вот мой код на page-blog.php
и page-proyecto.php
:
<section id="search">
<div class="container">
<div class="page-title">PAGE TITLE</div>
<form action="" method="post" class="search-form searchandfilter justify-content-between" id="searchbar">
<div class="row">
<div class="offset-lg-2 col-lg-6">
<label class="search-bar">
<div class="btn-search"><i class="fa fa-search"></i></div>
<input type="search" name="ofsearch" class="search-txt" placeholder="<?php echo esc_attr_x( 'Búsqueda', 'placeholder' ) ?>" value="<?php echo get_search_query()?>" />
<input type="hidden" name="post_type" value="post_type"/>
</label>
</div>
<div class="col-lg-4">
<?php
$categories = get_categories( array ('orderby' => 'name', 'order' => 'asc' ) );
if( $terms = get_categories( array('taxonomy' => 'category', 'orderby' => 'name') ) )
{
?>
<select name="ofcategory" id="ofcategory" class="postform custom-select" name="categoryfilter">
<option value="0">Categoría</option>
<?php
foreach ( $terms as $term )
{
?>
<option value="<?php echo $term->term_id;?>" data-categoria="<?php echo $term->name;?>"><?php echo $term->name;?></option>
<?php
}
?>
</select>
<?php
}
?>
<input type="hidden" name="ofcategory_operator" value="and">
</div>
</div>
<div class="row justify-content-end">
<input type="hidden" name="ofsubmitted" value="1">
<input type="submit" value="Filtrar" class="btn-submit btn-main-aqua">
<div class="btn-submit btn-main-aqua" onclick="displaymessage();reset()">Vaciar Campos</div>
</div>
</form>
</div>
</section>
ПРИМЕЧАНИЕ :
- Этот код используется на обеих страницах.
- Я только изменяю заголовок страницы и значение скрытого ввода в поиске.
- Я не могу знать, какими будут названия категорий, они будет создан пользователем.
Вот мой код o n * search.php
и category.php
:
<?php get_header();?>
<section id="search">
<div class="container">
<div class="row m-0"><div class="page-title">Resultados de búsqueda</div></div>
<div class="row p-3"><div class="title">"<?php the_search_query();?>"</div></div>
<div class="row row-eq-height m-0">
<?php
if(have_posts())
{
if (get_post_type() == 'proyecto')
{
while (have_posts())
{
the_post();
$img = get_field("port-logo");
?>
<div class="col-lg-4 col-md-6 col-sm-12 p-0" data-aos="fade-up" data-aos-duration="1000">
<a href="<?php the_permalink();?>">
<div class="proyecto-img">
<img src="<?php echo $img;?>">
</div>
</a>
</div><!-- ITEM -->
<?php
}
}
else
{
if (get_post_type() == 'post')
{
while (have_posts())
{
the_post();
$titulo = get_field("blog-titulo");
$subtitulo = get_field("blog-subtitle");
$img = get_field("blog-img");
$intro = get_field("blog-intro");
?>
<div class="col-lg-4 col-md-6 col-sm-12" data-aos="fade-up" data-aos-duration="1000">
<div class="post-cont">
<a href="<?php echo the_permalink();?>">
<div class="post-img">
<img src="<?php echo $img;?>">
<div class="subtitle"><?php foreach((get_the_category()) as $category){ echo '- ' . $category->cat_name; }?></div>
</div>
</a>
<div class="desc-title"><?php echo the_title();?></div>
<div class="post-desc"><?php echo $intro;?></div>
<a href="<?php echo the_permalink();?>">Leer más</a>
</div>
</div><!-- ITEM -->
<?php
}
}
else
{
?>
No results.
<?php
}
}
}
else
{
?>
No results.
<?php
}
?>
</div>
<div class="row p-0 m-0 mt-5">
<a href="javascript:history.go(-1)"><div class="btn-main-red">Regresar</div></a>
</div>
</div>
</section>
<?php get_footer();?>
Я не уверен, что это правильный способ его кодирования или мне нужно иметь 2 разных документа результатов поиска для этого ...
Моя основная проблема заключается в том, что они функционируют так, как если бы они были одной и той же формой поиска, а не двумя разными (поскольку этот код находится на каждой странице с разными значениями в скрытом поле), то же самое относится к search.php
. Должен ли я сделать 2 разных файла, если да, как это сделать?
Когда я фильтрую по категории, я бы хотел, чтобы результат URL был примерно таким:
для пользовательского типа записи: mywebpage.com/proyecto/category/category1/?s=some_text
и для блога: mywebpage.com/category/category1/?s=some_text
Я также пытался использовать POST и GET, и это сработало, но мои категории перестали работать ...
I Я искал ответ на мою проблему в течение нескольких дней и даже искал в кодексе и на различных форумах, но я не добился успеха, я также начинающий, поэтому я не знаю, смог ли я найти ответ, но я просто не понял его. .. Любая форма помощи и руководства приветствуется, спасибо.