سؤال

i have a function in my plugin append_the_content($content) this is used to display my function inside the post, but it is coming before the post, i want to make it after the post, for this i tried this code, but then too its not coming

function parse_twitter_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix) {
  $feed = str_replace("&lt;", "<", $feed);
  $feed = str_replace("&gt;", ">", $feed);
  $clean = explode("<content type=\"html\">", $feed);

  $amount = count($clean) - 1;

  echo $prefix;

  for ($i = 1; $i <= $amount; $i++) {
    $cleaner = explode("</content>", $clean[$i]);
    echo $tweetprefix;
    echo $cleaner[0];
    echo $tweetsuffix;
  }

  echo $suffix;
}

function the_twitter_feed($username) {
  // $username = "Mba_"; // Your twitter username.
  $limit = "5"; // Number of tweets to fetch.

  /* These prefixes and suffixes will display before and after the entire block of tweets. */
  $prefix = ""; // Prefix - some text you want displayed before all your tweets.
  $suffix = ""; // Suffix - some text you want displayed after all your tweets.
  $tweetprefix = "<b>".$username.": </b> "; // Tweet Prefix - some text you want displayed before each tweet.
  $tweetsuffix = "<br>"; // Tweet Suffix - some text you want displayed after each tweet.

  $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" . $limit;

  $twitterFeed = get_transient($feed);
  if (!$twitterFeed) {
    $twitterFeed = wp_remote_fopen($feed);
    set_transient($feed, $twitterFeed, 3600); // cache for an hour
  }
  if ($twitterFeed)
    parse_twitter_feed($twitterFeed, $prefix, $tweetprefix, $tweetsuffix, $suffix);
}

function append_the_content($content) {
    if(get_option('tweetID')!=null){
    $content .= "<div class='post'><p>".the_twitter_feed(get_option('tweetID'))."</p></div>";
       echo $content;
      }
       else{
       return $content;
       }
}

add_filter('the_content', 'append_the_content');

add_action('admin_menu','tweet_fetch');

function tweet_fetch(){
add_options_page('Tweet','Tweet', 8, 'tweet', 'tweet_fetcher');
}
function tweet_fetcher(){
?>
<h2>Tweet Fetcher options</h2>
<table>
<form method='post' action='options.php' style='margin:0 20px;'>
<?php wp_nonce_field('update-options'); ?>
<tr><td>Twitter UserID:</td><td><input type="text" name="tweetID"  value="<?php echo get_option('tweetID'); ?>" <?php echo get_option('tweetID'); ?> />
</td></tr>

<input type='hidden' name='action' value='update'/>
<input type='hidden' name='page_options' value='tweetID'/>

<tr><td><p class='submit'>
<input type='submit' name='Submit' value='Update Options &raquo;'/>
</p></td></tr>
</table>
</form>
<?php
}

how can i make it after the post???

هل كانت مفيدة؟

المحلول

Edited, try this

<?php

function parse_twitter_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix) {
    $feed = str_replace("&lt;", "<", $feed);
    $feed = str_replace("&gt;", ">", $feed);
    $clean = explode("<content type=\"html\">", $feed);

    $amount = count($clean) - 1;

    $output = $prefix;

    for ($i = 1; $i <= $amount; $i++) {
        $cleaner = explode("</content>", $clean[$i]);
        $output .= $tweetprefix;
        $output .= $cleaner[0];
        $output .= $tweetsuffix;
    }

    $output .= $suffix;

    return $output;
}

function the_twitter_feed($username) {
    // $username = "Mba_"; // Your twitter username.
    $limit = "5"; // Number of tweets to fetch.

    /* These prefixes and suffixes will display before and after the entire block of tweets. */
    $prefix = ""; // Prefix - some text you want displayed before all your tweets.
    $suffix = ""; // Suffix - some text you want displayed after all your tweets.
    $tweetprefix = "<b>" . $username . ": </b> "; // Tweet Prefix - some text you want displayed before each tweet.
    $tweetsuffix = "<br>"; // Tweet Suffix - some text you want displayed after each tweet.

    $feed = "http://search.twitter.com/search.atom?q=from:" . $username . "&rpp=" .
        $limit;

    $twitterFeed = get_transient($feed);
    if (!$twitterFeed) {
        $twitterFeed = wp_remote_fopen($feed);
        set_transient($feed, $twitterFeed, 3600); // cache for an hour
    }
    if ($twitterFeed)
        return parse_twitter_feed($twitterFeed, $prefix, $tweetprefix, $tweetsuffix, $suffix);
}

function append_the_content($content) {
    if (get_option('tweetID') != null) {
        $content .= "<div class='post'><p>" . the_twitter_feed(get_option('tweetID')) .
            "</p></div>";
        return $content;
    } else {
        return $content;
    }
}

add_filter('the_content', 'append_the_content');

add_action('admin_menu', 'tweet_fetch');

function tweet_fetch() {
    add_options_page('Tweet', 'Tweet', 8, 'tweet', 'tweet_fetcher');
}

function tweet_fetcher() {

?>
<h2>Tweet Fetcher options</h2>
<table>
<form method='post' action='options.php' style='margin:0 20px;'>
<?php

    wp_nonce_field('update-options');

?>
<tr><td>Twitter UserID:</td><td><input type="text" name="tweetID"  value="<?php

    echo get_option('tweetID');

?>" <?php

    echo get_option('tweetID');

?> />
</td></tr>

<input type='hidden' name='action' value='update'/>
<input type='hidden' name='page_options' value='tweetID'/>

<tr><td><p class='submit'>
<input type='submit' name='Submit' value='Update Options &raquo;'/>
</p></td></tr>
</table>
</form>
<?php

}

?>

نصائح أخرى

Most likely your the_twitter_feed() function echoes results instead of returning them.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى wordpress.stackexchange
scroll top