我实际上正在使用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在他的根上指出问题:)