0

各配列をエコーできません。私が間違っていることを知りません。各配列をエコーする方法は何でしょうか? 以下のようなエコーする方法をいくつか試しましたが、成功しませんでした。

function simple_social_sharing( $attr_twitter = null, $attr_items = null ) {

    // parse variables
    $twitter_account = $attr_twitter;
    $item_toggles = $attr_items;

    // get post content and urlencode it
    global $post;
    $browser_title_encoded = urlencode( trim( wp_title( '', false, 'right' ) ) );
    $page_title_encoded = urlencode( get_the_title() );
    $page_url_encoded = urlencode( get_permalink($post->ID) );

    // create share items array
    $share_items = array ();

    // set each item
    $item_facebook = array(
        "class" => "facebook",
        "href" => "http://www.facebook.com/sharer.php?u={$page_url_encoded}&t={$browser_title_encoded}",
        "text" => "Share on Facebook"
    );
    $item_twitter = array(
        "class" => "twitter",
        "href" => "http://twitter.com/share?text={$page_title_encoded}&url={$page_url_encoded}&via={$twitter_account}",
        "text" => "Share on Twitter"
    );
    $item_google = array(
        "class" => "google",
        "href" => "http://plus.google.com/share?url={$page_url_encoded}",
        "text" => "Share on Google+"
    );

    // test whether to display each item
    if($item_toggles) {
        // explode into array
        $item_toggles_array = explode( ",", $item_toggles );
        // set each item on or off
        $show_facebook = $item_toggles_array['0'];
        $show_twitter = $item_toggles_array['1'];
        $show_google = $item_toggles_array['2'];
    }
    else {
        $display_all_items = 1;
    }

    // form array of items set to 1
    if( $show_facebook==1 || $display_all_items ) {
        array_push( $share_items, $item_facebook );
    }
    if( $show_twitter==1 || $display_all_items) {
        array_push( $share_items, $item_twitter );
    }
    if( $show_google==1 || $display_all_items) {
        array_push( $share_items, $item_google );
    }

    // if one or more items
    if ( ! empty( $share_items ) ) {
        // create output
        $share_output = "<ul class=\"ss-share\">\n";
        foreach ( $share_items as $share_item ) {
            $share_output .= "<li class=\"ss-share-item\">\n";  
            $share_output .= "<a class=\"ss-share-link ico-{$share_item['class']}\" href=\"{$share_item["href"]}\" rel=\"nofollow\" target=\"_blank\">{$share_item['text']}</a>\n"; 
            $share_output .= "</li>\n"; 
        }
        $share_output .= "</ul>";
        // echo output
        echo $share_output;
    }
}

// add shortcode to output buttons
function simple_social_sharing_shortcode( $atts, $content = null ) {
    // parse variables / set defaults
    extract( shortcode_atts( array(
        'twitter' => '',
        'display' => '1,1,1',
    ), $atts ) );
    // output buttons
    ob_start();
    simple_social_sharing( $twitter, $display );
    $output_string = ob_get_contents();
    ob_end_clean();
    return force_balance_tags( $output_string );
}

開発者の呼び出し機能も機能していません

<?php simple_social_sharing('twitteraccount', '1,1,1'); ?>

この方法で各配列を呼び出そうとしましたが、間違っています。

<?php simple_social_sharing([1]); ?>
4

2 に答える 2

0

下に向かって、foreachブロックに次のスニペットがあります:
... href = \ "{$ share_item ["href "]} \" .. ..

hrefを二重引用符で囲むと、問題が発生します。

あなたはそれを
...href= \ "{$ share_item ['href']}\"として持つ必要があります...

于 2013-02-04T19:33:43.940 に答える
0

関数は値を返す必要があり、エコーしません..

の代わりにecho $share_output;、あなたはそれを持っているべきですreturn $share_output;

出力を表示するには、関数の戻り値をエコーし​​ます (配列の場合はprint_rそれ以外のecho場合)。

<?php echo simple_social_sharing('twitteraccount', '1,1,1'); //NOTE THE 'echo' HERE.. ?>
于 2013-02-04T19:42:05.790 に答える