自定义分类/帖子类型的Google Map快捷码

时间:2012-07-12 作者:Alex Stanhope

调用所有WP堆栈交换器!

我目前正在开发的一个网站上使用Alain Gonzales的Google Map Shortcode插件,效果很好:

Google Map Shortcode plug-in on wordpress.org

最近,我在站点中添加了一个自定义帖子类型(称为“hotels”),并创建了两个新的自定义分类法来使用(“cities”和“regions”)。我想使用上面提到的插件来显示使用CPT/自定义分类法的帖子的地图点,到目前为止,它可以让我添加有问题的点,但不能正确地将它们显示在相关的主题模板文件中-它只显示分类法中的第一篇帖子,而不显示其他帖子。

在插件文件中,有一行:

$post\\u obj=获取\\u帖子(数组(\'category\\u in\'=>$categories,\'numberposts\'=>-1));

用于查询类别内的帖子并打印出其关联的地图点;当然,问题在于,由于自定义分类法不是“传统”类别,因此无法与它们协同工作:(

你们中有谁能想出一种方法,我可以正确地查询分类法,从而从其中的每一篇文章中获得要点?

一如往常,我们将非常感激您的帮助!

2 个回复
SO网友:Nikola Ivanov Nikolov

很抱歉重新发布这篇文章,但它出现在头版,我注意到它太旧了,太晚了。。。以下是我对这个问题的看法:

// This will filter the shortcode attributes and will insert custom 
// value for the "cat" parameter
function filter_gmaps_shortcode_atts( $atts ) {
    // We add a custom value in the $cat parameter
    if ( is_tax( \'cities\' ) ) {
        $atts[\'cat\'] = \'filter_taxonomy_cities\';
    } elseif ( is_tax( \'regions\' ) ) {
        $atts[\'cat\'] = \'filter_taxonomy_regions\';
    }

    return $atts;
}
add_filter( \'gmshc_shortcode_atts\', \'filter_gmaps_shortcode_atts\', 10 );

// This filters the WordPress query and checks for our custom values from above
// We then modify the query to look for the proper post type and taxonomy
function filter_gmaps_get_post( &$wp_query ) {
    if ( isset( $wp_query->query_vars[\'category__in\'] ) ) {
        $queried_obj = get_queried_object();
        if ( in_array( \'filter_taxonomy_cities\', $wp_query->query_vars[\'category__in\'] ) || in_array( \'filter_taxonomy_regions\', $wp_query->query_vars[\'category__in\'] ) ) {
            unset( $wp_query->query_vars[\'category__in\'] );

            $wp_query->query_vars[\'tax_query\'] = array(
                array(
                    \'taxonomy\' => $queried_obj->taxonomy,
                    \'terms\' => array( intval( $queried_obj->term_id ) ),
                    \'field\' => \'id\'
                )
            );
            $wp_query->query_vars[\'post_type\'] = \'hotels\';
        }
    }
}
add_action( \'pre_get_posts\', \'filter_gmaps_get_post\', 10 );
基本上,我们在“城市”或“地区”分类页面上过滤短代码属性,并为“cat”参数添加自定义值。在pre_get_posts 操作激发者WP_Query::get_posts() 我们检查自定义值是否存在于category__in 参数-如果是,则取消设置category__in 参数并添加tax_query 当前分类的参数。

SO网友:ashraf

只需遵循此链接,它将引导您完成向自定义分类添加自定义字段的过程。从这一点上,您可以在创建的新元框中添加html代码,并在其中插入您的google地图代码。然后获取两个点x,y并将其插入两个文本输入中,并存储它们以用于自定义分类。http://pippinsplugins.com/adding-custom-meta-fields-to-taxonomies/

另一个将谷歌地图添加到自定义帖子类型的链接。http://www.billerickson.net/integrate-google-maps-wordpress/谢谢

结束