it-swarm.com.de

Wie erstelle ich einen HTML-Einbettungscode zum Veröffentlichen? WP Beiträge auf anderen Nicht-WP-Websites?

Ich möchte einen Einbettungscode in meinem WP Blog anbieten, mit dem Benutzer neu veröffentlichte Beiträge auf ihren Websites mithilfe eines HTML/Javascript-Code-Snippets veröffentlichen können, das sie von meiner WP Website und kopieren können Einfügen in ihre Nicht-WP-Site.

Könnt ihr helfen?

5
jnthnclrk

Sie müssen grundsätzlich einen Bereich außerhalb Ihres aktuellen Themas erstellen, in dem Sie Inhalte erstellen können, die Sie in einen iframe einfügen können.

Sie geben Ihrem Benutzer einfach so etwas:

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

Und sie haben Ihre Beiträge auf ihrer Website!

In Schritt eins wird ein URL-Endpunkt für Ihren Iframe erstellt. Zuerst müssen Sie eine Umschreiberegel für den Iframe hinzufügen und dann die Abfragevariable filtern, um sicherzustellen, dass WordPress die neue Iframe-Abfragevariable erkennt und nicht entfernt.

<?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;
}

Als nächstes schließen Sie template_redirect an und "catch", wenn die iframe-Abfragevariable vorhanden ist. Wenn ja, können Sie tun, was Sie wollen. Z.B. Liste der Beiträge abrufen und anzeigen.

<?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();
}

Sie müssen lediglich einen Platz für Ihre Benutzer schaffen, um den iframe-Code abzurufen. Verwenden Sie dazu einen Shortcode oder erstellen Sie einfach eine Funktion (wie die folgende), um sich irgendwo in Ihr Thema einzufügen.

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

Hier ist alles was als Plugin .

4
chrisguitarguy

Sie möchten Ihren Nutzern eine JS-Datei präsentieren, die sie in ihre Websites einbetten können, um die neuesten Beiträge aus Ihrem WP Blog zu erhalten. Ich würde einen RSS-Parser versuchen :)

Überprüfen Sie dies: https://stackoverflow.com/questions/226663/parse-rss-with-jquery

Wenn Sie eine Antwort aus der verknüpften Frage zitieren, ist der einfachste Weg, dies mit jQuery zu tun, https://stackoverflow.com/a/7067582/807101

1
Sterex

Sie müssen lediglich den Code eines Drittanbieters mit der Widgets-API in ein WordPress-Widget einbinden.

In Bezug auf die Twitter-Widgets, die Sie speziell erwähnt haben, habe ich mich bereits die Mühe gemacht, den Twitter-Code in ein WordPress-Widget zu packen und als Plugin zu veröffentlichen , sodass mein Plugin möglicherweise als nützliche Anleitung für die Verwendung dieser Methode dient für andere Skripte von Drittanbietern.

0
Chip Bennett

... diese Funktionalität ist standardmäßig bereits vorhanden.

Jede WordPress-Site kann einen externen RSS-Feed in einem Widget auf ihrer Site veröffentlichen. Solange Sie einen RSS-Feed für Ihre Inhalte erstellen, können andere WP Websites diese Inhalte über ein Widget erneut veröffentlichen.

Wenn Sie dazu ein benutzerdefiniertes Plugin schreiben möchten (d. H. Ein einzelnes installierbares System erstellen, bei dem Endbenutzer RSS nicht kennen oder verstehen müssen), ist dies eigentlich recht einfach.

Ich veröffentliche tatsächlich ein Plugin , mit dem WP Websitebesitzer Inhalte von einer WordPress-Website in ihrer Seitenleiste erneut veröffentlichen können. Es ist eine bestimmte Site, und ich veröffentliche nur die Ergebnisse einer bestimmten Suchanfrage.

Hier istungefährwas es tut:

  1. Ziehen Sie den RSS von der Remote-Site
  2. Durchsuchen Sie den RSS-Feed nach dem neuesten Beitrag (ich liste nur den neuesten auf).
  3. Den neuesten Beitrag als Widget in der Seitenleiste ausgeben

Widget Code:

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;
    }
}

Der Vorteil hierbei ist, dass fetch_feed() den Feed mit einem Transienten zwischenspeichert, sodass ich nicht bei jedem Laden der Seite auf die entfernte Site treffe. Es ist schnell, effizient und ziemlich einfach zu erledigen. Das Plugin, mit dem ich oben verlinkt habe, ruft den neuesten Beitrag von einer Site ab, die tägliche spirituelle Meditationen anbietet, und ich veröffentliche die neueste Meditation auf meiner eigenen Site erneut.

Sie können es in Aktion auf der Seitenleiste eines meiner Blogs sehen, Grounded Christianity .

0
EAMann