add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'location';
$qvars[] = 'from';
$qvars[] = 'to';
$qvars[] = 'type';
return $qvars;
}
<form method="get" class="block obj-filter">
<div class="row d-flex align-items-center">
<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
<input type="text" name="location" id="location" class="obj-filter-input" value="">
</div>
<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
<input type="date" name="from" id="from" class="obj-filter-input" value="">
</div>
<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
<input type="date" name="to" id="to" class="obj-filter-input" value="">
</div>
<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
<select name="type" id="type" class="obj-select">
<option value="solo">Один взрослый</option>
<option value="two-adults">Два взрослых</option>
<option value="family">Двое взрослых + ребенок</option>
</select>
</div>
<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
<input id="obj-filter-submit" type="submit" class="button" value="Фильтровать">
</div>
</div>
</form>
https://example.loc/?location=yerevan&from=2807&to=0408&type=solo
pre_get_posts
можно поправить основной запрос вытянув данные из гет-параметров. Вам нужно установить новые tax_query или meta_query в зависимости от логики сайтаadd_action( 'pre_get_posts', 'custom_pre_get_posts', 1 );
function custom_pre_get_posts( $query ) {
// Выходим, если это админ-панель или не основной запрос.
if ( is_admin() || ! $query->is_main_query() )
return;
// предположим, что это таксономия с машинами
if ( $query->is_tax( 'location' ) ) {
$meta = array();
$meta['meta_query']['relation'] = 'AND';
// выбираем записи с GET запросами
$query_vars = array( 'location', 'from', 'to', 'type' );
foreach ( $query_vars as $key => $query_var ) {
if ( $var = get_query_var( $query_var, false ) ) {
// Тут пишем логику по которой собирается переменная meta_query и/или tax_query
}
}
$query->set( 'meta_query', $meta );
}
}
get_posts()
или get_terms()
делать не нужно geoip_detect2_get_info_from_current_ip()
example.com/catalog/clothing?gender=man&brand=mammut&color=white
add_query_arg()
$url = 'https://site.ru/';
$url = add_query_arg( array( 'gender' => 'man', 'brand' => 'mammut', 'color' => 'white' ), $url );
add_rewrite_rule()
add_query_arg()
и подключать нужный шаблон при проверке get_query_var()
$url = 'https://site.ru/';
$url = add_query_arg( array( 'page_id' => '5302' ), $url ); // https://site.ru/?page_id=5302
if ( $page_id = get_query_var( 'page_id' ) ) {
get_template_part( 'templates/page', 'simple', array( 'page_id' => $page_id ) );
} else {
}
При подключений PHP файлов сайт не работает
сами php файлы у меня в директории сайта находятся
require_once ( ABSPATH . 'wp-admin/includes/plugin.php' );
require_once get_stylesheet_directory() . '/includes/setup.php';
wp_get_nav_menu_items()
// Получаем элементы меню по ID.
$nav_menu_items = wp_get_nav_menu_items( $menu_id );
// Получаем элементы меню по location.
$menu_location = 'primary';
$locations = get_nav_menu_locations();
if ( isset( $locations[ $menu_location ] ) ) {
$nav_menu_items = wp_get_nav_menu_items( $locations[ $menu_location ] );
}
json_encode()
и вставить в тег <script>
в html$data = [
'@context' => '//schema.org',
'@type' => 'Product',
'name' => 'Dorothy Perkins Свитер',
'image' => [
'//shop.com/photos/1x1/photo.jpg',
'//shop.com/photos/4x3/photo.jpg',
],
'description' => 'Теплый свитер синего цвета из 100% мериносовой шерсти.',
'sku' => '0446310786',
'brand' => [
'@type' => 'Thing',
'name' => 'Dorothy Perkins',
],
'aggregateRating' => [
'@type' => 'AggregateRating',
'ratingValue' => '4.4',
'reviewCount' => '89',
],
'offers' => [
'@type' => 'Offer',
'url' => '//shop.com/dp-sviter',
'priceCurrency' => 'RUB',
'price' => '2500',
'priceValidUntil' => '2020-11-05',
'itemCondition' => '//schema.org/NewCondition',
'availability' => '//schema.org/InStock',
'seller' => [
'@type' => 'Organization',
'name' => 'Интернет-магазин Shop.co',
],
],
];
$data = json_encode( $data );
echo '<script type="application/ld+json">' . $data . '</script>';
$crb_options = array(
'post_meta' => __( 'Article Properties', 'textdomain' ),
'term_meta' => __( 'Category Properties', 'textdomain' ),
);
foreach ( $crb_options as $key => $crb_option ) {
Container::make( $key, $crb_option )
->add_tab( 'SEO', array(
Field::make( 'text', 'crb_seo_title', __( 'Title', 'textdomain' ) ),
Field::make( 'textarea', 'crb_seo_description', __( 'Description', 'textdomain' ) ),
Field::make( 'text', 'crb_seo_keywords', __( 'Keywords', 'textdomain' ) ),
Field::make( 'radio', 'crb_seo_robots', __( 'Robots Visibility', 'textdomain' ) )
->add_options( array(
'index, follow' => 'index, follow',
'noindex, nofollow' => 'noindex, nofollow',
) )
) );
}
load_theme_textdomain()
wp_robots
geoip_detect2_get_info_from_current_ip()
, разобрать полученный результат и сделать редирект на подходящую языковую версию register_post_type()
, а сами переводы лежат в .po и .mo файлах