你好,祝大家好。 我在尝试使用搜索结果从WooCommerce获取产品时遇到问题(我试图通过自定义“搜索器”获取产品)。 事情是我的搜索器工作正常,但是只显示了白色屏幕和产品名称。我希望该产品能够像在常规的Woo Commerce商店中那样显示,并具有样式和所有内容,就好像我在按类别或其他任何参数(例如那里的插件)进行搜索一样。
为了提供帮助,到目前为止,这是我的代码:
functions.php:
function search_tickets_shortcode() {
ob_start();
get_template_part('tickets', 'search');
return ob_get_clean();
}
add_shortcode( 'ticket_searcher', 'search_tickets_shortcode' );
add_action('init','wpse_load_custom_search_template');
function wpse_load_custom_search_template(){
if( isset($_REQUEST['search']) == 'tickets' ) {
require('advanced-search-template.php');
die();
}
}
advanced-search-template.php:
<ul class="products">
<?php
$params = array('posts_per_page' => 5,
'post_type' => 'product'); // (1)
$wc_query = new WP_Query($params);
// Get data from URL into variables
$_strprt = $_GET['startingport'] != '' ? $_GET['startingport'] : '';
$_endprt = $_GET['endingport'] != '' ? $_GET['endingport'] : '';
// Start the Query
$v_args = array(
'post_type' => 'product', // your CPT
//'s' => $_strprt, // looks into everything with the keyword from your 'name field'
'meta_query' => array(
array(
'key' => '_sku', // assumed your meta_key is 'car_model'
'value' => $_strprt,
'compare' => 'LIKE', // finds models that matches 'model' from the select field
),
)
);
$vehicleSearchQuery = new WP_Query( $v_args );
// Open this line to Debug what's query WP has just run
// var_dump($vehicleSearchQuery->request);
// Show the results
if( $vehicleSearchQuery->have_posts() ) :
while( $vehicleSearchQuery->have_posts() ) : $vehicleSearchQuery->the_post();
the_title(); // Assumed your cars' names are stored as a CPT post title
endwhile;
else :
_e( 'Sorry, nothing matched your search criteria', 'textdomain' );
endif;
wp_reset_postdata();
?>
</ul>
以及我从tickets-search.php用于搜索者的表格:
<form method="get" id="tickets-search" role="search" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<div class ="row aligned">
<h3><?php _e( 'Tickets Search', 'textdomain' ); ?></h3>
<!-- PASSING THIS TO TRIGGER THE ADVANCED SEARCH RESULT PAGE FROM functions.php -->
<input type="hidden" name="search" value="tickets">
<label for="startingport" class="" required><?php _e( 'From: ', 'textdomain' ); ?></label><br>
<select name="startingport" id="startingport" required>
<option value=""><?php _e( 'From:', 'textdomain' ); ?></option>
<option value="Ancona"><?php _e( 'Ancona', 'textdomain' ); ?></option>
<option value="Igoumenitsa"><?php _e( 'Igoumenitsa', 'textdomain' ); ?></option>
</select><br><br>
<label for="endingport" class=""><?php _e( 'To: ', 'textdomain' ); ?></label><br>
<select name="endingport" id="endingport" required>
<option value=""><?php _e( 'To:', 'textdomain' ); ?></option>
<option value="IgoumenitsaR"><?php _e( 'AnconaR', 'textdomain' ); ?></option>
<option value="AnconaR"><?php _e( 'IgoumenitsaR', 'textdomain' ); ?></option>
</select>
<br><br>
<label for="datepickah">Choose date</label><br>
<input type="text" name="date" id="datepickah" required />
<br><br>
<div class="subm">
<input type="submit" id="searchsubmit" value="tickets" />
</div>
</div>
</form>
如何才能获得正确的前端“产品页面”,而不仅仅是将产品本身的名称设置为白色背景? 我是PHP的新手,因此非常感谢您提供任何帮助。 预先谢谢你!
PS:
试图找到一个插件来实现类似的目的,但是找不到适合我的情况的插件。我还浏览了许多此处发布的问题,但似乎也找不到关于该问题的更多帮助。