web-dev-qa-db-ja.com

ShortCodeでエコーを使う - 動けなくなる

約3日間の検索といじくり回した後、私は立ち往生しています。私はコーダーではありませんが、試してみるのが好きです。

私は自分のWordPressデータベースのテーブルから星占いを取得する短いコードを持っています(私はテーブルを作成しました)。しかし、私はそれ以来、短いコードは "echo"や "print"が正しい出力を示すことを許さないことを発見しました。ショートコードを配置したページに表示されるのではなく、ショートコードが先に実行されるため、ページの上部に表示されます。

$結果をどのようにしてWebページに出力するかがわかりません。

これはショートコードとPHPです。

function fl_aries_co_today_shortcode() {
global $wpdb;
$results = $wpdb->get_results("SELECT horoscope FROM wpaa_scope_co WHERE date = CURDATE() AND sign = 'aries'");
foreach($results as $r) {    
echo "<p>".$r->horoscope."</p>";
}
}
add_shortcode( 'fl_aries_co_today','fl_aries_co_today_shortcode' );

エコーは短いコード内では機能しません。ホロスコープをテキストとしてページに表示するにはどうすればよいですか。

(私はテンプレートページの使い方を学ぶことができることを知っていますが、短いコードのオプションはとても速くて便利です。)

1
Pixxxie

出力バッファリングを使用して、生成したすべての出力を受け取ることもできます。以下のように使用してください。

 function fl_aries_co_today_shortcode(){
 global $ wpdb; 
 $ results = $ wpdb-> get_results( "SELECTホロスコープwpaa_scope_co WHERE date = CURDATE()AND sign = 'aries' "); 
 ob_start(); 
 foreach($の結果は$ rになります){
 echo"
"。$ r - > horoscope。" "; $ content = ob_get_contents(); ob_end_clean(); return $ content; add_shortcode( 'fl_aries_co_today'、 'fl_aries_co_today_shortcode');
3
Pascal Knecht

詳細については Codex を参照できます。ショートコードにデータを出力するにはreturnを使用します。

function fl_aries_co_today_shortcode() {
    global $wpdb;
    $results = $wpdb->get_results("SELECT horoscope FROM wpaa_scope_co WHERE date = CURDATE() AND sign = 'aries'");
    $result ='';
    foreach($results as $r) {    
        $result .= "<p>".$r->horoscope."</p>";
    }
    return $result;
}
add_shortcode( 'fl_aries_co_today','fl_aries_co_today_shortcode' );

ショートコードを使用すると、これはどこでも値を返します。

3
Jack Johansson