我需要能够在functions.php中测试当前正在显示哪个页面。这样我就可以根据显示的页面对我的帖子应用不同的过滤器。
例如,我有两个页面,一个名为buy.php,另一个名称为sold.php。我需要能够在当前显示这些页面时为每个页面定位某种唯一ID,然后使用if语句应用不同的过滤器。
我希望我的代码如何工作;
if(page = buy.php){
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'For Sale'
);
}else if(page = sold.php){
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'Sold'
);
}
我该怎么做?
我需要代码在这个函数中工作,这是过滤我的帖子;
add_action('wp_ajax_customfilter', 'property_filter');
add_action('wp_ajax_nopriv_customfilter', 'property_filter');
function property_filter(){
$posts = array(
'posts_per_page' => -1,
'post_type' => 'property',
'orderby' => 'date'
);
$posts['meta_query'] = array( 'relation' => 'AND' );
// price filtering
if($_POST['min_price'] && !empty($_POST['min_price'])){
$min_price = $_POST['min_price'];
}else{
$min_price = 0;
}
if($_POST['max_price'] && !empty($_POST['max_price'])){
$max_price = $_POST['max_price'];
}else{
$max_price = 10000000;
}
$posts['meta_query'][] = array(
'key' => 'property_price',
'type' => 'NUMERIC',
'value' => array($min_price, $max_price),
'compare' => 'BETWEEN'
);
// bed filtering
if($_POST['min_beds'] && !empty($_POST['min_beds'])){
$min_beds = $_POST['min_beds'];
}else{
$min_beds = '1';
}
if($_POST['max_beds'] && !empty($_POST['max_beds'])){
$max_beds = $_POST['max_beds'];
}else{
$max_beds = '9+';
}
$posts['meta_query'][] = array(
'key' => 'bedrooms',
'value' => array($min_beds, $max_beds),
'compare' => 'BETWEEN'
);
//location filtering
if(isset( $_POST['location'] ) && $_POST['location']){
$location = $_POST['location'];
$location_val = stripslashes($location);
$posts['meta_query'][] = array(
'relation' => 'OR',
array(
'key' => 'street',
'value' => $location_val,
'compare' => 'LIKE'
),
array(
'key' => 'town',
'value' => $location_val,
'compare' => 'LIKE'
),
array(
'key' => 'county',
'value' => $location_val,
'compare' => 'LIKE'
),
array(
'key' => 'postcode',
'value' => $location_val,
'compare' => 'LIKE'
)
);
}
// property type filtering
if(isset( $_POST['type'] ) && $_POST['type']){
$posts['meta_query'][] = array(
'key' => 'type_of_property',
'value' => $_POST['type'],
'compare' => 'IN'
);
}
// secondary flash filtering
if(isset( $_POST['flash_type'] ) && $_POST['flash_type']){
$posts['meta_query'][] = array(
'key' => 'optional_category',
'value' => $_POST['flash_type'],
'compare' => 'IN'
);
}
$query = new WP_Query( $posts );
if( $query->have_posts() ): ?>
<?php while( $query->have_posts() ): $query->the_post() ?>
<div class="col-sm-6 col-md-4 col-lg-3 post">
<div class="shadowwrapper2">
<a href="<?php the_permalink(); ?>">
<?php
$main_field = get_field('images');
$first_row = $main_field[0];
$img = $first_row['image'];
$img_med = $img['sizes']['medium'];
?>
<div class="propertywrapper">
<img class="img-fluid gal_imgs" src="<?php echo $img_med ?>" alt="<?php $img['alt']; ?>"/>
<?php $secondary_flash = get_field('optional_category'); ?>
<?php if($secondary_flash == "Ideal First Time Buy"): ?>
<span class="second_flash">Ideal First Time Buy</span>
<?php elseif($secondary_flash == "Ideal Investment"): ?>
<span class="second_flash">Ideal Investment</span>
<?php elseif($secondary_flash == "Under offer"): ?>
<span class="second_flash">Under offer</span>
<?php endif; ?>
</div>
<div class="cornerflash">
<img src="<?php bloginfo('template_directory'); ?>/imgs/forsale.svg" alt="corner flash">
</div>
<div class="propertyinfo">
<div class="row m-0">
<div class="col-6 p-0 mt-2"><?php the_field('type_of_property'); ?></div>
<div class="col-6 p-0 mt-2"><?php the_field('bedrooms'); ?> bedrooms</div>
</div>
</div>
<div class="streetpricewrapper">
<p class="streetname">
<?php the_field('street'); ?>, <?php the_field('town'); ?>
</p>
<p class="price">
£<?php the_field('property_price'); ?>
</p>
</div>
</a>
</div>
</div>
<?php endwhile;
wp_reset_postdata();
endif;
wp_die();
}
答案 0 :(得分:1)
您可以通过简单的if语句来实现,通过名称检查当前页面,wordpress有一个名为is_page()
的函数
<?php
function currentpage()
{
if (is_page('buy')) {
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'For Sale'
);
} elseif (is_page('sold')) {
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'Sold'
);
}
}
add_action('wp_head', 'currentpage');
更新:
根据您编辑的代码,您可以使用:
function property_filter(){
$posts = array(
'posts_per_page' => -1,
'post_type' => 'property',
'orderby' => 'date'
);
$posts['meta_query'] = array( 'relation' => 'AND' );
// price filtering
if($_POST['min_price'] && !empty($_POST['min_price'])){
$min_price = $_POST['min_price'];
}else{
$min_price = 0;
}
if($_POST['max_price'] && !empty($_POST['max_price'])){
$max_price = $_POST['max_price'];
}else{
$max_price = 10000000;
}
$posts['meta_query'][] = array(
'key' => 'property_price',
'type' => 'NUMERIC',
'value' => array($min_price, $max_price),
'compare' => 'BETWEEN'
);
// bed filtering
if($_POST['min_beds'] && !empty($_POST['min_beds'])){
$min_beds = $_POST['min_beds'];
}else{
$min_beds = '1';
}
if($_POST['max_beds'] && !empty($_POST['max_beds'])){
$max_beds = $_POST['max_beds'];
}else{
$max_beds = '9+';
}
$posts['meta_query'][] = array(
'key' => 'bedrooms',
'value' => array($min_beds, $max_beds),
'compare' => 'BETWEEN'
);
//location filtering
if(isset( $_POST['location'] ) && $_POST['location']){
$location = $_POST['location'];
$location_val = stripslashes($location);
$posts['meta_query'][] = array(
'relation' => 'OR',
array(
'key' => 'street',
'value' => $location_val,
'compare' => 'LIKE'
),
array(
'key' => 'town',
'value' => $location_val,
'compare' => 'LIKE'
),
array(
'key' => 'county',
'value' => $location_val,
'compare' => 'LIKE'
),
array(
'key' => 'postcode',
'value' => $location_val,
'compare' => 'LIKE'
)
);
}
// property type filtering
if(isset( $_POST['type'] ) && $_POST['type']){
$posts['meta_query'][] = array(
'key' => 'type_of_property',
'value' => $_POST['type'],
'compare' => 'IN'
);
}
// secondary flash filtering
if(isset( $_POST['flash_type'] ) && $_POST['flash_type']){
$posts['meta_query'][] = array(
'key' => 'optional_category',
'value' => $_POST['flash_type'],
'compare' => 'IN'
);
}
//page type filtering
if (is_page('buy')) {
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'For Sale'
);
} elseif (is_page('sold')) {
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'Sold'
);
}
$query = new WP_Query( $posts );
答案 1 :(得分:0)
使用
$_SERVER['REQUEST_URI']
这将给出当前执行脚本的名称。要获得文件名,这将起作用
echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
答案 2 :(得分:0)
使用网页ID
global $post;
$pageid=$post->ID;
if ( $pageid=="2" ) { // 2 = your page id
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'For Sale'
);
}
else if( $pageid=="3" ){ // 3 = your page id
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'Sold'
);
}
使用模板
if (is_page_template( 'templates/buy.php' ) ) {
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'For Sale'
);
}
else if(is_page_template( 'templates/sold.php' ) ){
$posts['meta_query'][] = array(
'key' => 'property_status',
'value' => 'Sold'
);
}