在Wordpress中为手工插件创建一个短代码

时间:2018-03-12 16:08:04

标签: wordpress plugins shortcode

我实际上正在使用WordPress并从头开始创建一个插件,完全在管理页面上工作。 该插件允许您添加相关的国家/地区和语言(例如,USA-> English | Sapnish) 我正在使用类和构造函数来实现插件的功能

现在我想用国家创建一个选择,并根据国家/地区选择其他语言。我知道如何在js / html中创建它,但我找不到从插件中获取数据的方法。

我试过了: 创建一个使用插件的其他功能的插件(在插件中)(见下文)

public function getCountry()
{
    global $wpdb;

    $table_name = $wpdb->prefix . "country_wmu";
    $results = $wpdb->get_results('SELECT * FROM ' . $table_name);
    if ($wpdb->last_error !== '') {
        echo '<p class="info-wmu error">Une erreur est survenue</p>';
    } else {
        return $results;
    }
}

public function getLang($id)
{
    global $wpdb;

    $table_name = $wpdb->prefix . "lang_wmu";
    $results = $wpdb->get_results('SELECT * FROM ' . $table_name . ' WHERE _id_country = ' . $id);

    if ($wpdb->last_error !== '') {
        echo '<p class="info-wmu error">Une erreur est survenue</p>';
    } else {
        return $results;
    }
}

public function wmu_get_data($atts, $content=null)
{

    $country = $this->getCountry();

    foreach ($country as $key => $value) {
        $country_id = $value->id;
        $lang = $this->getLang($country_id);
        foreach ($lang as $key2 => $value2) {
            $country[$key]->lang = array(
                'name' => $value2->name,
                'url' => $value2->url
            );
        }

    }
    return $country;
}

然后添加短代码

add_shortcode('wmu_data', 'wmu_get_data');

并在页面中显示短代码,但短代码显示为纯文本

[wmu_data]

所以我尝试在我的functions.php中执行一个do_shortcode函数,然后在这个函数中添加一个短代码。

function test()
{
    $country = do_shortcode('[wmu_data]');
    echo '<pre>';
    print_r($country);
    echo '</pre>';
}

add_shortcode('test','test');

但没有任何反应,空白页......

我真的没有更多的想法来做这件事......

编辑:

我发现了错误代码,必须使用

add_shortcode('wmu_data', array('WB_MultiLang_URL','wmu_data'));

在函数

之外调用它

感谢Larjos在他的根上指出问题:)

0 个答案:

没有答案