WordPress:如何在单独的网站上嵌入一个小工具?

时间:2014-11-14 作者:Kelli Townsend

一位客户要求我们将他们的WordPress小部件复制到一个单独的非WP站点上。

有没有一种简单的方法可以“插入”小部件?我想我必须以某种方式从Wordpress后端获取一些信息。

1 个回复
最合适的回答,由SO网友:Nabil Kadimi 整理而成

这是我建议的解决方案,它要求您使用Widget LogicDynamic Widgets.

将下面的代码添加到您的主题或自定义插件中,在我提到的所有插件中创建我们将用于iframe src 属性(给它一个描述性的标题,开发人员往往会忘记很多)

  • 将您想要的小部件添加到侧栏“我的Iframe”(如果您没有更改该名称)
  • 将小部件限制到您之前创建的页面,如果您使用侧栏逻辑,则将使用条件is_single(N); 其中N是页面或帖子ID。现在您可以将iframe添加到非WordPress网站,下面的代码是第一步的代码:

    /**
      * Verify dependencies 
      * 
      * In this example, we check for plugins in this order:
      * - Widgets Logic
      * - Dynamic Widgets
      */
    define(
        \'WPSE_168484_ERROR\'
        , __( \'Please install and activate <strong>Widgets Logic</strong> or <strong>Dynamic Widgets</strong> and use one of them to show only one widget per page, you can still use many iframes in the non-WordPress website.\' )
    );
    
    function_exists( \'widget_logic_options_control\' )
    || defined( \'DW_VERSION\')
    || die( WPSE_168484_ERROR );
    
    // Declare sidebar
    register_sidebar( array(
        \'name\' => __( \'My Iframe\', \'my_textdomain\' ),
        \'id\' => \'my_iframe\',
    ) );
    
    // Show sidebar as HTML
    add_action( \'init\', \'my_iframe_widget\' );
    function my_iframe_widget() {
        if( is_active_sidebar( \'my_iframe\' ) ) {
    
            // Get widget HTML
            ob_start();
            dynamic_sidebar( \'my_iframe\' );
            $widget_html = ob_get_clean();
    
            // Remove wrapping <li>
            $widget_html = preg_replace( \'/^<li.+>/\', \'\', $widget_html );
            $widget_html = preg_replace( \'/<\\/li>$/m\', \'\', $widget_html );
    
            // Make Valid HTML5 
            $widget_html = "<!doctype html><meta charset=utf-8>$widget_html";
    
            // Output and exit
            die( $widget_html );
        }
    }
    
    以下是第六步的代码:

    <iframe src="http://example.com/index.php?p=N" />
    
    更换http://example.com/ 使用URL和N以及页面或帖子ID。

  • 结束

    相关推荐

    Multiple widgets in wordpress

    我已经创建了一个wordpress小部件。它在小部件选项中有一个下拉列表。下拉列表包含“facebook”和“twitter”。如果管理员选择“twitter”,那么twitter关注者计数将显示在小部件中,与facebook的情况类似。使用jquery,该计数显示在id为“social count”的div中。当页面加载时,jquery ajax将获取计数并将其插入到“社交计数”中。问题是它在单个实例中运行良好。但是,如果在侧栏中添加了2个实例,则在这两个实例中都会显示最新的计数,因为我使用的是$(“.