Vendor Listing by Location

时间:2016-08-12 作者:Ravi

我正在尝试实现wcvendors提供的解决方案。com知识库,无法获得指示的结果。有没有人能帮我解决这个问题。我是wordpress和php的初学者。

基本上,我正试图按供应商的门店位置列出供应商。为此,我使用wc供应商多供应商市场插件。我已经创建了一个下拉自定义字段,如代码所示。自定义字段将在注册时出现,并反映在用户配置文件中以供查看和编辑。我想在此元键上筛选供应商,以便根据其位置对供应商进行分类。

如果有其他选择的话,那将是一件很棒的事情。

2 个回复
最合适的回答,由SO网友:Ravi 整理而成

我发现的另一种方法是使用自定义分类法和产品过滤器插件。

非常简单,易于在网页的任何部分实现。

SO网友:Ravi

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/)

我真的希望这能帮助别人,也希望你们都有一个美好的一天!

谢谢兰德尔

相关推荐