Randall提供的解决方案-http://www.wcvendors.com/help/topic/sort-vendor-by-shop-setting-field/
总的来说,这是一个概念。我需要一个短代码,允许我按位置区分供应商。要做到这一点,我要求用户在注册期间和商店设置中选择一个位置。然后,我将这些元信息拉入一个短代码,该代码只过滤并显示那些供应商。
以下是一个示例:[wc\\u vendors\\u location=“Alabama”]
我是这样安排的。我使用WP用户Frontend Pro。在此处找到。这很重要,因为这就是我将位置元附加到供应商的方式。那么,我们开始吧。
首先,我进入为我的供应商设置页面指定的注册表。(请参阅此处的帖子获取该表单)我添加了一个下拉列表,列出了我需要供应商选择的所有位置。这是最简单的部分。
接下来,我创建了以下代码:
/**
* list of vendors by location
*
* @param $atts shortcode attributs
*/
function wc_vendors_location( $atts ) {
$html = \'\';
extract( shortcode_atts( array(
\'orderby\' => \'display_name\',
\'order\' => \'ASC\',
\'per_page\' => \'12\',
\'columns\' => \'4\',
\'show_products\' => \'yes\',
\'location\' => \'\',
\'org\' => \'\',
), $atts ) );
// Hook into the user query to modify the query to return users that have at least one product
if ($show_products == \'yes\') remove_action( \'pre_user_query\', array( $this, \'vendors_with_products\') );
// Get all vendors
$vendor_total_args = array (
\'role\' => \'vendor\',
\'meta_key\' => \'pv_shop_slug\',
\'meta_value\' => \'\',
\'meta_key\' => \'location\',
\'meta_value\' => $location,
\'meta_key\' => \'organization\',
\'meta_value\' => $org,
\'orderby\' => $orderby,
\'order\' => $order,
);
if ($show_products == \'yes\') $vendor_total_args[\'query_id\'] = \'vendors_with_products\';
$vendor_query = New WP_User_Query( $vendor_total_args );
$all_vendors =$vendor_query->get_results();
ob_start();
// Loop through all vendors and output a simple link to their vendor pages
foreach ($all_vendors as $vendor) {
wc_get_template( \'vendor-list.php\', array(
\'shop_link\' => WCV_Vendors::get_vendor_shop_page($vendor->ID),
\'shop_name\' => $vendor->pv_shop_name,
\'vendor_id\' => $vendor->ID,
\'shop_description\' => $vendor->pv_shop_description,
), \'wc-vendors/front/\', wcv_plugin_dir . \'templates/front/\' );
} // End foreach
$html .= \'<ul class="wcv_vendorslist">\' . ob_get_clean() . \'</ul>\';
return $html;
}
add_shortcode(\'wc_vendors_location\', \'wc_vendors_location\');
/* END */
我把它放在了我的孩子主题的函数中。php。
为了让您快速了解其工作原理,我简单地复制了显示所有供应商的短代码(请参见上面的帖子)。然后我拿出了与分页相关的部分(我不需要它,你可能需要)。
然后在–“extract(shortcode\\u atts……”下,我添加了–“location”=>“,
这是对可以调整的短代码部分的责任。
[wc_vendors_location location="filtered piece"]
然后,我添加了当这个短代码搜索供应商时所需的参数。在“$vendor\\u total\\u args=数组…”下
我补充道:
‘meta_key’ => ‘location’,
‘meta_value’ => $location,
meta\\u键告诉它查看元信息“位置”,而不是实际单词是什么。由meta\\u值处理。这就是为什么两者都需要的原因。
一旦插入了这两个页面,我就简单地删除了分页,因为我没有那么多供应商,但如果需要的话,您可能希望保留它。如果是这样,不要忘记在那里添加元键和值。
最终,这对我起了作用。我决不是说我是php方面的专家。我有足够的知识使我陷入困境。所以,如果有什么不适合你,请让我们来解决它!
此外,如果你没有WP用户前端,你可以参考这篇文章来创建你自己的区域来填写。(http://www.wcvendors.com/help/topic/manipulating-the-vendors-shop-settings/)
我真的希望这能帮助别人,也希望你们都有一个美好的一天!
谢谢兰德尔