web-dev-qa-db-ja.com

発行するHTML埋め込みコードを作成する方法 WP 他のWP以外のWebサイトでの投稿?

WPブログから埋め込みコードを提供して、HTML/Javascriptコードスニペットを使用して自分のWebサイトに最近の投稿を再公開し、自分のWPサイトからコピーできるようにします。 WP以外のサイトに貼り付けます。

皆さん助けてもらえますか?

5
jnthnclrk

基本的には、現在のテーマの外側に、iframeに固定できるコンテンツを作成するための領域を作成する必要があります。

あなたはあなたのユーザーにこのような何かを与えるだけです:

<iframe src="http://yoursite.com/iframe/"></iframe>

そして彼らは彼らのサイトにあなたの投稿を持っています!

ステップ1では、iframeのURLエンドポイントを作成します。まず、iframeの書き換え規則を追加してから、WordPressが新しいiframeクエリ変数を認識し、削除されないように、クエリ変数をフィルタ処理する必要があります。

<?php
add_action( 'init', 'wpse32725_add_rewrite' );
/**
 * Adds the rewrite rule for our iframe
 * 
 * @uses add_rewrite_rule
 */
function wpse32725_add_rewrite()
{
    add_rewrite_rule(
        '^iframe$',
        'index.php?iframe=true',
        'top'
    );
}

add_filter( 'query_vars', 'wpse32725_filter_vars' );
/**
 * adds our iframe query variable so WP knows what it is and doesn't
 * just strip it out
 */
function wpse32725_filter_vars( $vars )
{
    $vars[] = 'iframe';
    return $vars;
}

次に、template_redirectにフックし、iframeクエリ変数が存在するときはいつでも "catch"します。もしそうであれば、あなたは何でもやりたいことができます。例えば。投稿のリストを取得して表示します。

<?php
add_action( 'template_redirect', 'wpse32725_catch_iframe' );
/**
 * Catches our iframe query variable.  If it's there, we'll stop the 
 * rest of WP from loading and do our thing.  If not, everything will
 * continue on its merry way.
 * 
 * @uses get_query_var
 * @uses get_posts
 */
function wpse32725_catch_iframe()
{
    // no iframe? bail
    if( ! get_query_var( 'iframe' ) ) return;

    // Here we can do whatever need to do to display our iframe.
    // this is a quick example, but maybe a better idea would be to include
    // a file that contains your template for this?
    $posts = get_posts( array( 'numberposts' => 5 ) );
    ?>
    <!doctype html>
    <html <?php language_attributes(); ?>>
    <head>
        <?php /* stylesheets and such here */ ?>
    </head>
    <body>
        <ul>
            <?php foreach( $posts as $p ): ?>
                <li>
                    <a href="<?php echo esc_url( get_permalink( $p ) ); ?>"><?php echo esc_html( $p->post_title ); ?></a>
                </li>
            <?php endforeach; ?>
        <ul>
    </body>
    </html>
    <?php
    // finally, call exit(); and stop wp from finishing (eg. loading the
    // templates
    exit();
}

残っているのは、ユーザーがiframeコードを取得するための場所を作成することだけです。あなたはそれをするためにショートコードを使うことができますか、あるいはあなたのテーマにどこかに固執するために(下記のような)関数を単に作ることができます。

<?php
function wpse32725_iframe_code()
{
    return sprintf(
        '<code>&lt;iframe src="%s"&gt;&lt;/iframe&gt;</code>',
        esc_url( home_url('/iframe/') )
    );
}

これがすべてです - プラグインとして

4
chrisguitarguy

WPブログから最新の投稿を取得するために、ユーザーが自分のWebサイトに埋め込むことができるJSファイルをユーザーに提示したいと思います。私はRSSパーサーを試してみたい:)

これをチェックアウト: https://stackoverflow.com/questions/226663/parse-rss-with-jquery

リンクされた質問から答えを引用する、jQueryでそれをする最も簡単な方法は、 https://stackoverflow.com/a/7067582/807101 です。

1
Sterex

サードパーティのコードを受け取り、 ウィジェットAPI を使用してWordPressウィジェット内にラップするだけです。

あなたが具体的に述べたTwitterウィジェットに関しては、 TwitterコードをWordPressウィジェットでラップする手間をかけてプラグインとしてリリースした したがって、私のPluginはこの方法を使うための役に立つガイドとして役立つでしょう他のサードパーティスクリプト用です。

0
Chip Bennett

...この機能はデフォルトですでに存在しています。

どのWordPressサイトでも、自分のサイトのウィジェットに外部RSSフィードを公開できます。あなたがあなたのコンテンツのRSSフィードを作成している限り、他のWPサイトはウィジェットを通してそのコンテンツを再公開することができます。

これを行うためのカスタムプラグインを作成したい場合(つまり、エンドユーザーにRSSの知識や理解を必要としない単一のインストール可能なシステムを作成する場合)、実際には非常に簡単です。

私は実際に プラグインを公開する WPサイト所有者が彼らのサイドバーにあるWordPressサイトからのコンテンツを再公開することを可能にします。これは特定のサイトであり、特定の検索クエリの結果のみを公開しています。

これはです。

  1. リモートサイトからRSSを取得する
  2. 最新の投稿のRSSフィードを解析します(私は最新の投稿のみを一覧表示します)。
  3. 最新の投稿をサイドバーのウィジェットとして出力する

ウィジェットコード:

class My_Widget extends WP_Widget {
    function My_Widget() {
        $widget_ops = array(
            'classname' => 'my_widget',
            'description' => 'Add the latest post from My Blog to your sidebar.'
        );

        $this->WP_Widget( false, 'My Widget', $widget_ops );
    }

    function widget( $args, $instance ) {
        extract( $args );

        // Get the feed
        $feed = fetch_feed( "http://myblog.com&feed=rss2" );
        $post = array();

        if( is_wp_error( $feed ) )
            return;

        $latest = $feed->get_item();

        $post = array(
            'title' => esc_attr(strip_tags($latest->get_title())),
            'excerpt' => str_replace( array("\n", "\r"), ' ', esc_attr( strip_tags( @html_entity_decode( $latest->get_description(), ENT_QUOTES, get_option('blog_charset') ) ) ) ),
            'content' => str_replace( array("\n", "\r"), ' ', $latest->get_content() ),
            'link' => esc_url(strip_tags($latest->get_link()))
        );

        echo $before_widget;
        echo '<div class="inside">';
        echo '<div class="overflow">';
        echo '<span class="top"></span>';
        echo '<h2><a href="' . $post['link'] . '">' . $post['title'] . '</a></h2>';
        echo '<p>' . $post['content'] . '</p>';
        echo '<p class="credit">Powered by <a href="http://myblog.com">MyBlog.com</a></p>';
        echo '<span class="bottom"></span>';
        echo '</div>';
        echo '</div>';
        echo $after_widget;
    }
}

ここでの利点は、fetch_feed()が一時的にフィードをキャッシュするということです、それで私はすべてのページロードでリモートサイトに当たっていません。それは速く、効率的で、そしてとても簡単です。私が上記にリンクしたプラグインは、毎日の精神的な瞑想を提供しているサイトから最新の投稿を引き出し、私は自分のサイトで最新の瞑想を再発行します。

あなたは私のブログの一つのサイドバーでそれが実行されているのを見ることができます 洗練されたキリスト教

0
EAMann