我的短代码没有使用vc_map

时间:2018-05-04 10:01:57

标签: php wordpress visual-composer

我已经构建了一个Wordpress插件,现在我想添加对Visual Composer的支持,但我无法让它工作。我已经阅读了很多关于如何使用vc_map的文章,在github上找到了带有示例的页面,似乎我做了这些文章中描述的所有内容。但是我的短代码仍然没有出现在VC编辑器中。

我的短代码(它作为短代码完美运行,[mappy id="123"]将显示ID为123的地图。

add_shortcode('mappy', 'mappy_shortcode');
function mappy_shortcode($atts) {

    // Attribute defaults
    extract(shortcode_atts(array(
        'id' => null,
    ), $atts));

    // Check if id is set, and the given post is a mappy_map
    if(!isset($atts['id'])) {
        return '';
    }
    $post = get_post(intval($atts['id']));
    if(!isset($post)) {
        return;
    }
    if($post->post_type != 'mappy_map') {
        return;
    }

    return $post->post_content;
}

我试过的代码:

/**
 * Visual Composer Support
 */
if(defined('WPB_VC_VERSION')) {
    add_action('vc_before_init', 'mappy_vc_support');
}
function mappy_vc_support() {
    vc_map(
        array(
            'base' => 'mappy',
            'description' => __('Display a Mappy map.', 'mappy'),
            'category' => 'Mappy',
            'icon' => plugin_dir_url(__FILE__) . 'img/vc_map_32.png',
            'class' => '',
            'weight' => 100,
            'params' => array(
                array(
                    'type' => 'dropdown',
                    'class' => '',
                    'heading' => __('Térkép', 'mappy'),
                    'param_name' => 'id',
                    'value' => mappy_map_list(),
                    'description' => __('Térkép', 'mappy'),
                    'holder' => 'div'
                )
            )
        )
    );
}

/**
 * Helper function to get all mappy_map posts
 */
function mappy_map_list() {
    $list = array();
    $posts = get_posts(array('post_type' => 'mappy_map'));
    foreach($posts as $post) {
        $list[$post->post_title] = $post->ID;
    }
    return $list;
}

我还尝试将mappy_vc_support挂钩到initadmin_init,但没有运气。

另请注意,函数vc_map本身正在被调用,并返回1

这可能是什么问题?

0 个答案:

没有答案