2016-11-27 4 views
0

WordPressの投稿コンテンツの上にショートコードの出力が表示されます - 何が間違っていますか?私は、この関数からショートを作成しようとしている

if ($social_sharing && function_exists('wpsp_social_sharing')) : 
    echo wpsp_social_sharing(get_the_ID(), $twitter = true, $facebook = true, $googleplus = true, $pinterest = true, $love = true, $social_sharing_alignment = 'left'); 
    wp_enqueue_script('wpsp-love-it'); 
endif; 

次のようになります。

function wpsp_social_sharing_shortcode() { 
    return get_the_title() . wpsp_social_sharing(get_the_ID(), $twitter = true, $facebook = true, $googleplus = true, $pinterest = true, $love = true, $social_sharing_alignment = 'center'); 
    wp_enqueue_script('wpsp-love-it'); 
} 
add_shortcode('sk77_wpsp_social_sharing', 'wpsp_social_sharing_shortcode'); 

get_the_titleは私が挿入され、適切な場所、で出力されますショートコードしかし、wpsp_social_sharingが投稿内容の上に表示されます。私は間違って何をしていますか?

答えて

0

関数wpsp_social_sharing()は、呼び出すときにブラウザにエコーアウトする必要があります。短いコードでは、出力バッファをキャプチャしてから戻す必要があります。

どうすればよいですか?

  1. この関数が、エコーアウトする代わりにHTMLを返す方法を提供しているかどうかを確認します。
  2. PHPの出力バッファを使用して出力を取得し、それを元に戻します。

免責

私はwpsp_social_sharing()関数またはあなたがエンキューされているスクリプトを保証することはできません。そのコードを見ることなく、関数に渡す適切な引数とスクリプトハンドルが正しいかどうかを判断することはできません。

あなた自身で行う必要があります。ここで

PHPの出力バッファオプション

はショートでPHP Output Bufferを使用する方法の例です。この例では、あらかじめ定義されたデフォルトと属性の処理を使ってショートコードを書きました。

add_shortcode('sk77_wpsp_social_sharing', 'wpsp_social_sharing_shortcode'); 
/** 
* Process the Social Sharing Shorcode. 
* 
* @since 1.0.0 
* 
* @param attray|string $attributes 
* 
* @return string 
*/ 
function wpsp_social_sharing_shortcode($attributes) { 
    // Define the default attributes you are making available 
    // for dynamic content, i.e. [sk77_wpsp_social_sharing twitter=0] 
    $defaults = array(
     'twitter' => 1, 
     'facebook' => 1, 
     'googleplus' => 1, 
     '$pinterest' => 1, 
     'love'  => 1, 
     'alignment' => 'center', 
    ); 

    $attributes = shortcode_atts($defaults, $attributes, 'sk77_wpsp_social_sharing'); 

    // start the output buffer 
    ob_start(); 
    // You'll need to determine what this function needs passed to it 
    wpsp_social_sharing(
     get_the_ID(), 
     $attributes['twitter'], 
     $attributes['facebook'], 
     $attributes['googleplus'], 
     $attributes['pinterest'], 
     $attributes['love'], 
     $attributes['alignment'] 
    ); 

    // grab the content out of the output buffer 
    // store it into a variable 
    // clean out the buffer 
    $social_share_html = ob_get_clean(); 

    wp_enqueue_script('wpsp-love-it'); 

    return get_the_title() . $social_share_html; 
} 

あなたのニーズに合わせて調整してください。

0

詳細な回答Tonayに感謝します。これは理解しにくいです。私はまだ学ぶことがたくさんあることがわかります。

誰かが私に別の解決策を提案しました。できます。

function sk77_wpsp_social_sharing_shortcode() { 
     ob_start(); 
     echo wpsp_social_sharing(get_the_ID(), $twitter = true, $facebook = true, $googleplus = true, $pinterest = true, $love = true); 
     wp_enqueue_script('wpsp-love-it'); 
     $output_string = ob_get_contents(); 
     ob_end_clean(); 

     return $output_string; 
} 
add_shortcode('sk77_wpsp_social_sharing', 'wpsp_social_sharing_shortcode'); 
関連する問題