admin管理员组文章数量:1318563
I have a page on my wordpress to search for tires everything works fine but I would have liked to know how to add an extra column to sort them also by price.
They can already be sorted by size and type... But I can't find a solution for the price.
Thanks in advance !
Here is the code :
<?php
$resultLargura = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_largeur'ORDER BY wp_t.name ASC");
$resultAltura = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_hauteur' ORDER BY wp_t.name ASC");
$resultDiametro = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_diametre' ORDER BY wp_t.name ASC");
$resultTipoPneu = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_type-de-pneu' ORDER BY wp_t.name");
$resultDePneu = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_marque-pneus' ORDER BY wp_t.name");
$resultDePneus = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_categories-de-pneus' ORDER BY wp_t.name");
?>
<form class="form-tires" action="/resultados-da-pesquisa" method ="GET">
<h3 style="color: #222 !important">Recherche par dimension</h3>
<label class="input floatleft">
<select class="fullwidth floatleft" <?php /*required*/?> name="largura">
<option value="">Largeur</option>
<?php
foreach( $resultLargura as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="input floatleft">
<select class="fullwidth floatleft" <?php /*required*/?> name="altura">
<option value="">Hauteur</option>
<?php
foreach( $resultAltura as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="input floatleft">
<select class="fullwidth floatleft" <?php /*required*/?> name="diametro">
<option value="">Diamètre</option>
<?php
foreach( $resultDiametro as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<div class="pneu-detail"><img src="/wp-content/uploads/pneusahc.png"></div>
<label class="fullwidth floatleft">
<select class="fullwidth floatleft" required name="tipoPneu">
<?php
foreach( $resultTipoPneu as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="fullwidth floatleft">
<select class="fullwidth floatleft" required name="DePneu">
<?php
foreach( $resultDePneu as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="fullwidth floatleft">
<option style="color: black; font-weight: bold; ">Plus d'indications :</option>
<select type="checkbox" class="fullwidth floatleft" name="DePneus">
<option value="">Aucun</option>
<?php
foreach( $resultDePneus as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="fullwidth floatleft">
<option style="color: black; font-weight: bold; ">Choix du prix :</option>
<select type="checkbox" class="fullwidth floatleft" name="posts_this_price">
<option value="">Aucun</option>
<?php
foreach( $posts_this_price as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<input type="submit" value="RECHERCHE" name="PESQUISAR" class="fullwidth floatleft">
</form>
And the other page :
<?php
$optionLargura = isset($_GET['largura']) ? $_GET['largura'] : false;
$optionAltura = isset($_GET['altura']) ? $_GET['altura'] : false;
$optionDiametro = isset($_GET['diametro']) ? $_GET['diametro'] : false;
$optionTipoPneu = isset($_GET['tipoPneu']) ? $_GET['tipoPneu'] : false;
$marqueDePneu = isset($_GET['DePneu']) ? $_GET['DePneu'] : false;
$catDePneus = isset($_GET['DePneus']) ? $_GET['DePneus'] : false;
$coin="CHF";
$tax_query = array('relation' => 'AND');
if ($optionLargura!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_largeur',
'field' => 'slug',
'terms' => array($optionLargura),
'operator' => 'IN',
);
}
if ($optionAltura!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_hauteur',
'field' => 'slug',
'terms' => array($optionAltura),
'operator' => 'IN',
);
}
if ($optionDiametro!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_diametre',
'field' => 'slug',
'terms' => array($optionDiametro),
'operator' => 'IN',
);
}
if ($optionTipoPneu!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_type-de-pneu',
'field' => 'slug',
'terms' => array($optionTipoPneu),
'operator' => 'IN',
);
}
if ($marqueDePneu!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_marque-pneus',
'field' => 'slug',
'terms' => array($marqueDePneu),
'operator' => 'IN',
);
}
if ($catDePneus!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_categories-de-pneus',
'field' => 'slug',
'terms' => array($catDePneus),
'operator' => 'IN',
);
}
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) { // 'page' is used instead of 'paged' on Static Front Page
$paged = get_query_var('page');
} else {
$paged = 1;
}
$args = array(
'post_type' => array('product', 'product_variation'),
'post_status' => 'publish',
'posts_per_page' => get_option('posts_per_page'),
'paged' => $paged,
'tax_query' => $tax_query,
'orderby' => 'price',
'order' => 'asc',
);
$prods=new WP_Query($args);
if( $prods->have_posts() ){
$content = '<form class="cart" action="; method="post" enctype="multipart/form-data" wtx-context="D6ECEB0A-195E-4229-9B5D-1A13E3D7E5AF">';
while($prods->have_posts()) :
$product=$prods->the_post();
$content .= '<div class="search-col" id="search-product-'.get_the_ID().'">';
$attachment_url='<div class="w10 floatleft"><img alt="' . get_the_title() . '" src=".png" width="80"></div>';
$attachment_id=get_post_thumbnail_id(get_the_ID());
if($attachment_id){
$post_attachment_url=wp_get_attachment_url($attachment_id);
if($post_attachment_url)$attachment_url='<div class="w15 floatleft"><img alt="' . get_the_title() . '" src="'.$post_attachment_url.'" width="80"></div>';
}
$content.=$attachment_url;
//$content .= '<div class="w60 floatleft"><a href="/'.$row->post_name.'/">' . $row->post_title . '</a>';
$content .= '<div class="w60 floatleft"><a href="'.get_the_permalink().'">' . get_the_title() . '</a>';
$content .= '<div class="fullwidth floatleft"><small class="inline floatleft">Tags</small></div>';
$price=get_post_meta(get_the_ID(),'_regular_price',true);
if(date("Y-m-d") != "2020-12-30")
{
$calcAscTotal= $price ;
$content .= '<h3 style="color:#d52b1e;"><del style="opacity: .5; display: inline-block; margin: 15px;color: #545454;"></del> CHF '.round($calcAscTotal, 0, PHP_ROUND_HALF_UP).' .- '.'</h3>';
}
else
{
$content .= '<h3><small>Seulement</small> '. $price.' CHF.- '.'</h3>';
}
$content .= '</div>';
$content .= '<button type="submit" name="add-to-cart" value='. get_the_ID() .' class="single_add_to_cart_button button alt w20 floatright">Panier</button>';
//$content .= '</div>';
$content.='</div>';
endwhile;
$content.= '<a onclick="window.history.go(-1); return false;" href="#" class="text-red center-el bold" style="font-size:2em; padding: 20px 0">Retour</a>';
$content.='</form>';
}
else{
$content.="<h2 class='text-center'>".__('Aucun résultat trouvé','ahcor-autoshop').".</h2>";
$content.= '<a onclick="window.history.go(-1); return false;" href="#" class="text-red center-el bold" style="font-size:2em; padding: 20px 0">Retour</a>';
}
if($content != "" )echo $content;
if ($prods->max_num_pages > 1) : // custom pagination
$orig_query = $wp_query; // fix for pagination to work
$wp_query = $prods;
?>
<nav class="prev-next-posts" style="display: flex; justify-content: space-between; padding: 20px;">
<div class="next-posts-link" class="text-red center-el bold" style="font-size:2em;" >
<?php echo get_previous_posts_link( 'Précédent' ); ?>
</div>
<div class="prev-posts-link" class="text-red center-el bold" style="font-size:2em; text-align: right;">
<?php echo get_next_posts_link( 'Suivant', $prods->max_num_pages ); ?>
</div>
</nav>
<?php
$wp_query = $orig_query; // fix for pagination to work
?>
<?php endif; ?>
<form class="woocommerce-ordering" method="get" value="pneus">
<select name="orderby" class="orderby" aria-label="Commande">
<option value="menu_order" selected="selected">Tri par défaut</option>
<option value="popularity">Tri par popularité</option>
<option value="rating">Tri par notes moyennes</option>
<option value="date">Tri du plus récent au plus ancien</option>
<option value="price">Tri par tarif croissant</option>
<option value="price-desc">Tri par tarif décroissant</option>
</select>
<input type="hidden" name="paged" value="1">
</form>
I have a page on my wordpress to search for tires everything works fine but I would have liked to know how to add an extra column to sort them also by price.
They can already be sorted by size and type... But I can't find a solution for the price.
Thanks in advance !
Here is the code :
<?php
$resultLargura = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_largeur'ORDER BY wp_t.name ASC");
$resultAltura = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_hauteur' ORDER BY wp_t.name ASC");
$resultDiametro = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_diametre' ORDER BY wp_t.name ASC");
$resultTipoPneu = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_type-de-pneu' ORDER BY wp_t.name");
$resultDePneu = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_marque-pneus' ORDER BY wp_t.name");
$resultDePneus = $wpdb->get_results ("SELECT wp_t.name FROM $wpdb->term_taxonomy AS wp_tt
INNER JOIN $wpdb->terms AS wp_t ON wp_t.term_id = wp_tt.term_id
WHERE wp_tt.taxonomy = 'pa_categories-de-pneus' ORDER BY wp_t.name");
?>
<form class="form-tires" action="/resultados-da-pesquisa" method ="GET">
<h3 style="color: #222 !important">Recherche par dimension</h3>
<label class="input floatleft">
<select class="fullwidth floatleft" <?php /*required*/?> name="largura">
<option value="">Largeur</option>
<?php
foreach( $resultLargura as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="input floatleft">
<select class="fullwidth floatleft" <?php /*required*/?> name="altura">
<option value="">Hauteur</option>
<?php
foreach( $resultAltura as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="input floatleft">
<select class="fullwidth floatleft" <?php /*required*/?> name="diametro">
<option value="">Diamètre</option>
<?php
foreach( $resultDiametro as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<div class="pneu-detail"><img src="/wp-content/uploads/pneusahc.png"></div>
<label class="fullwidth floatleft">
<select class="fullwidth floatleft" required name="tipoPneu">
<?php
foreach( $resultTipoPneu as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="fullwidth floatleft">
<select class="fullwidth floatleft" required name="DePneu">
<?php
foreach( $resultDePneu as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="fullwidth floatleft">
<option style="color: black; font-weight: bold; ">Plus d'indications :</option>
<select type="checkbox" class="fullwidth floatleft" name="DePneus">
<option value="">Aucun</option>
<?php
foreach( $resultDePneus as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<label class="fullwidth floatleft">
<option style="color: black; font-weight: bold; ">Choix du prix :</option>
<select type="checkbox" class="fullwidth floatleft" name="posts_this_price">
<option value="">Aucun</option>
<?php
foreach( $posts_this_price as $value ) { ?>
<option value="<?php echo $value->name; ?>"><?php echo $value->name; ?></option>
<?php
}
?>
</select>
</label>
<input type="submit" value="RECHERCHE" name="PESQUISAR" class="fullwidth floatleft">
</form>
And the other page :
<?php
$optionLargura = isset($_GET['largura']) ? $_GET['largura'] : false;
$optionAltura = isset($_GET['altura']) ? $_GET['altura'] : false;
$optionDiametro = isset($_GET['diametro']) ? $_GET['diametro'] : false;
$optionTipoPneu = isset($_GET['tipoPneu']) ? $_GET['tipoPneu'] : false;
$marqueDePneu = isset($_GET['DePneu']) ? $_GET['DePneu'] : false;
$catDePneus = isset($_GET['DePneus']) ? $_GET['DePneus'] : false;
$coin="CHF";
$tax_query = array('relation' => 'AND');
if ($optionLargura!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_largeur',
'field' => 'slug',
'terms' => array($optionLargura),
'operator' => 'IN',
);
}
if ($optionAltura!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_hauteur',
'field' => 'slug',
'terms' => array($optionAltura),
'operator' => 'IN',
);
}
if ($optionDiametro!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_diametre',
'field' => 'slug',
'terms' => array($optionDiametro),
'operator' => 'IN',
);
}
if ($optionTipoPneu!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_type-de-pneu',
'field' => 'slug',
'terms' => array($optionTipoPneu),
'operator' => 'IN',
);
}
if ($marqueDePneu!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_marque-pneus',
'field' => 'slug',
'terms' => array($marqueDePneu),
'operator' => 'IN',
);
}
if ($catDePneus!='')
{
$tax_query[] = array(
'taxonomy' => 'pa_categories-de-pneus',
'field' => 'slug',
'terms' => array($catDePneus),
'operator' => 'IN',
);
}
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} elseif ( get_query_var('page') ) { // 'page' is used instead of 'paged' on Static Front Page
$paged = get_query_var('page');
} else {
$paged = 1;
}
$args = array(
'post_type' => array('product', 'product_variation'),
'post_status' => 'publish',
'posts_per_page' => get_option('posts_per_page'),
'paged' => $paged,
'tax_query' => $tax_query,
'orderby' => 'price',
'order' => 'asc',
);
$prods=new WP_Query($args);
if( $prods->have_posts() ){
$content = '<form class="cart" action="https://ahcor-autoshop.ch/panier" method="post" enctype="multipart/form-data" wtx-context="D6ECEB0A-195E-4229-9B5D-1A13E3D7E5AF">';
while($prods->have_posts()) :
$product=$prods->the_post();
$content .= '<div class="search-col" id="search-product-'.get_the_ID().'">';
$attachment_url='<div class="w10 floatleft"><img alt="' . get_the_title() . '" src="https://ahcor-autoshop.ch/wp-content/uploads/pneusahc.png" width="80"></div>';
$attachment_id=get_post_thumbnail_id(get_the_ID());
if($attachment_id){
$post_attachment_url=wp_get_attachment_url($attachment_id);
if($post_attachment_url)$attachment_url='<div class="w15 floatleft"><img alt="' . get_the_title() . '" src="'.$post_attachment_url.'" width="80"></div>';
}
$content.=$attachment_url;
//$content .= '<div class="w60 floatleft"><a href="https://ahcor-autoshop.ch/produit/'.$row->post_name.'/">' . $row->post_title . '</a>';
$content .= '<div class="w60 floatleft"><a href="'.get_the_permalink().'">' . get_the_title() . '</a>';
$content .= '<div class="fullwidth floatleft"><small class="inline floatleft">Tags</small></div>';
$price=get_post_meta(get_the_ID(),'_regular_price',true);
if(date("Y-m-d") != "2020-12-30")
{
$calcAscTotal= $price ;
$content .= '<h3 style="color:#d52b1e;"><del style="opacity: .5; display: inline-block; margin: 15px;color: #545454;"></del> CHF '.round($calcAscTotal, 0, PHP_ROUND_HALF_UP).' .- '.'</h3>';
}
else
{
$content .= '<h3><small>Seulement</small> '. $price.' CHF.- '.'</h3>';
}
$content .= '</div>';
$content .= '<button type="submit" name="add-to-cart" value='. get_the_ID() .' class="single_add_to_cart_button button alt w20 floatright">Panier</button>';
//$content .= '</div>';
$content.='</div>';
endwhile;
$content.= '<a onclick="window.history.go(-1); return false;" href="#" class="text-red center-el bold" style="font-size:2em; padding: 20px 0">Retour</a>';
$content.='</form>';
}
else{
$content.="<h2 class='text-center'>".__('Aucun résultat trouvé','ahcor-autoshop').".</h2>";
$content.= '<a onclick="window.history.go(-1); return false;" href="#" class="text-red center-el bold" style="font-size:2em; padding: 20px 0">Retour</a>';
}
if($content != "" )echo $content;
if ($prods->max_num_pages > 1) : // custom pagination
$orig_query = $wp_query; // fix for pagination to work
$wp_query = $prods;
?>
<nav class="prev-next-posts" style="display: flex; justify-content: space-between; padding: 20px;">
<div class="next-posts-link" class="text-red center-el bold" style="font-size:2em;" >
<?php echo get_previous_posts_link( 'Précédent' ); ?>
</div>
<div class="prev-posts-link" class="text-red center-el bold" style="font-size:2em; text-align: right;">
<?php echo get_next_posts_link( 'Suivant', $prods->max_num_pages ); ?>
</div>
</nav>
<?php
$wp_query = $orig_query; // fix for pagination to work
?>
<?php endif; ?>
<form class="woocommerce-ordering" method="get" value="pneus">
<select name="orderby" class="orderby" aria-label="Commande">
<option value="menu_order" selected="selected">Tri par défaut</option>
<option value="popularity">Tri par popularité</option>
<option value="rating">Tri par notes moyennes</option>
<option value="date">Tri du plus récent au plus ancien</option>
<option value="price">Tri par tarif croissant</option>
<option value="price-desc">Tri par tarif décroissant</option>
</select>
<input type="hidden" name="paged" value="1">
</form>
Share
Improve this question
edited Oct 20, 2020 at 14:24
Valerii Vasyliev
4142 silver badges9 bronze badges
asked Oct 20, 2020 at 12:40
Mourcely QuentinMourcely Quentin
12 bronze badges
1 Answer
Reset to default 0Replace
$args = array(
'post_type' => array('product', 'product_variation'),
'post_status' => 'publish',
'posts_per_page' => get_option('posts_per_page'),
'paged' => $paged,
'tax_query' => $tax_query,
'orderby' => 'price',
'order' => 'asc',
);
New code
$orderby = $_GET['orderby'] ?? '';
$args = array(
'post_type' => array('product', 'product_variation'),
'post_status' => 'publish',
'posts_per_page' => get_option('posts_per_page'),
'paged' => $paged,
'tax_query' => $tax_query
);
if ($orderby == 'price') {
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = '_price';
$args['order'] = 'asc';
} elseif ($orderby == 'price-desc'){
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = '_price';
$args['order'] = 'desc';
} elseif ($orderby == 'menu_order') {
// sort menu order
} elseif ($orderby == 'popularity') {
// sort popularity
} elseif ($orderby == 'rating') {
// sort rating
} elseif ($orderby == 'date') {
// sort date
}
本文标签: wp querySort by price wpdb
版权声明:本文标题:wp query - Sort by price wpdb 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742047995a2417904.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论