次のコードを使用して、ページから関数を呼び出しています。応答していません。
add_shortcode('my_ttcode', 'create_my_shortcode');
function create_my_shortcode($key1, $key2){
global $wpdb;
$result = $wpdb -> get_results ( "
SELECT *
FROM wp_villageleaderdb
WHERE VillageID = $key1 AND VillageLeaderPosition = $key2 LIMIT 0, 100
", 'ARRAY_N' );
var_dump($result);
//return $result[0][1] . "<br />"; $data = '';
$i = 0;
foreach( $result as $single_result ){
$data .= $result[$i][1] . "<br />";
$i++;
}
値が与えられれば$ key1と$ key2の代わりに、それは問題なく動作しています。
ワードプレスのページからの呼び出しは
[my_ttcode (V001, Sarpanch)]
正しい方法は何ですか?
試しましたが、パラメータが渡されません。これがコードです。
add_shortcode('vill_problems', 'get_villageproblems');
function get_villageproblems($atts){
extract(shortcode_atts( array( 'villid' => "V000", ), $atts ));
global $wpdb;
$result = $wpdb -> get_results ( "
SELECT *
FROM wp_villageleaderdb
WHERE VillageID = $villid LIMIT 0, 100
", 'ARRAY_N' );
$i = 0;
foreach( $result as $single_result ){
$data .= $result[$i][1] . "<br />"; $i++;
}
return $data . "<br />";
}
以下は、OPのコードスニペットでは問題があります。
shortcode_atts()
がありません。create_my_shortcode( $attr = [], $content = null ){ ... }
を使用してください。wpdb::prepare()
。起こりうるSQLインジェクションを避けたい。wp_
の代わりに、ハードコードされたテーブルプレフィックス、$wpdb->prefix
を使用します。SELECT *
で取得します。必要なものだけを取り出した方がよいでしょう。[my_ttcode key1="V001" key2="Sarpanch"]
しかし、key1
およびkey2
の代わりに、より記述的な属性を使用してください。WP_DEBUG
を使用しないかもしれません。追加する前に$data
文字列を初期化しません。確認してください。 ショートコード に関するより一般的な情報については、 Codex を参照してください。
それが役に立てば幸い!