如何创建一个HTML嵌入代码,以发布其他非可湿性粉剂网站上的可湿性粉剂帖子?

时间:2011-11-02 作者:jnthnclrk

我想在我的WP博客上提供一个嵌入代码,允许用户使用HTML/Javascript代码片段在他们的网站上重新发布最近的帖子,他们可以从我的WP站点复制并粘贴到他们的非WP站点。

你们能帮忙吗?

4 个回复
SO网友:chrisguitarguy

您基本上需要在当前主题之外创建一个区域,在其中创建一些可以粘贴到iframe中的内容。

您只需向用户提供如下内容:

<iframe src="http://yoursite.com/iframe/"></iframe>
他们的网站上有你的帖子!

第一步是为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;
}
接下来,只要存在iframe查询变量,就钩住template\\u重定向和“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/\') )
    );
}
这些都是as a plugin.

SO网友:Sterex

我知道你想给你的用户提供一个JS文件,他们可以将该文件嵌入到他们的网站中,从你的WP博客获取最新的帖子。我会尝试RSS解析器:)

查看以下内容:https://stackoverflow.com/questions/226663/parse-rss-with-jquery

引用链接问题的答案,使用jQuery最简单的方法是,https://stackoverflow.com/a/7067582/807101

SO网友:Chip Bennett

您只需获取第三方代码,并使用Widgets API.

关于你特别提到的Twitter小部件,I\'ve already gone to the trouble of wrapping the Twitter code in a WordPress Widget and released it as a Plugin, 因此,我的插件可能会为其他第三方脚本使用此方法提供有用的指导。

SO网友:EAMann

。。。默认情况下,此功能已存在。

任何WordPress站点都可以在其站点上的小部件中发布外部RSS提要。只要您正在生成内容的RSS提要,其他WP站点就可以通过小部件重新发布该内容。

如果您想编写一个自定义插件来实现这一点(即创建一个单一的、可安装的系统,而不需要最终用户了解或理解RSS),那么这实际上非常简单。

实际上我publish a plugin 这允许WP网站所有者在侧栏中重新发布WordPress网站的内容。这是一个特定的网站,我只发布特定搜索查询的结果。

这是roughly 其作用:

从远程站点拉RSS,解析最新帖子的RSS提要(我只列出最近的帖子)

  • 将最新帖子作为小部件输出到侧栏中的小部件代码:

    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() 将使用临时缓存提要,因此我不会在每次加载页面时都访问远程站点。它速度快、效率高,而且很容易做到。我上面链接的插件从一个提供每日精神冥想的网站上获取了最新的帖子,我在自己的网站上重新发布了最新的冥想。

    你可以在我的一个博客的侧栏上看到它的实际应用,Grounded Christianity.

  • 结束

    相关推荐

    在<img>提要中强制绝对RSSsrc链接

    我们在帖子的HTML代码中使用相对图像URL。看起来许多RSS阅读器上的相对src链接都断开了。默认情况下,Wordpress似乎不会为提要准备太多的post HTML。是否有任何解决方案可以对提要URL进行后期处理,并将所有链接和src属性编码为绝对值?