We'll create fresh WordPress site with Power BI Embedded for WordPress installed. You have 20 minutes to test the plugin after that site we'll be deleted.
This WordPress plugin supports Microsoft Power BI Embedded, including dashboards, reports, report visuals, Q&A, and tiles. Power BI is a sophisticated data analytics software and service package from Microsoft. More information on Power BI is available at www.powerbi.com.
Contribute to this plugin on GitHub at https://github.com/atlaspolicy/power-bi-embedded!
This plugin uses the Power BI REST API to access various types of content and easily embed them on a WordPress site using a shortcode. The plugin follows the “app owns data” process as documented by Microsoft at https://docs.microsoft.com/en-us/power-bi/developer/embedding-content. See https://docs.microsoft.com/en-us/power-bi/developer/embedding for more information from Microsoft on how to Power BI embed content.
The plugin relies on Microsoft’s JavaScript library for embedding Power BI available on Github here: https://github.com/Microsoft/PowerBI-JavaScript.
In order to use this plugin, users must first register an app with Azure AD to embed Power BI content. See https://docs.microsoft.com/en-us/power-bi/developer/register-app for more information on how to register an app. Make sure to write down your Client ID and Client Secret when you register the app.
The “app owns data” process requires that a single, master Power BI Pro account controls access. The credentials for this account are configured one time on the plugin settings page. The plugin will authenticate against Azure AD with those stored credentials.
After you save your changes, you’ll see the authentication status on the settings page if it worked. Once you’ve configured the plugin, you can now add Power BI content to your WordPress site and embed it wherever you want.
The plugin also includes support to control the Power BI Embedded resource on Azure. This can be really helpful if you’re trying to control costs by disabling the resource when it’s not in use. The scheduling can be controlled on a daily basis by setting the hour to enable and the hour to disable the resource. If you don’t need to disable the resource, then you can ignore this section.
Sunday/Saturday: Set the time to start and pause the resource on a daily basis.
For scheduling, it is recommended to use cron on your web server instead of WP Cron. Many websites exist to walk you through the process of using your web server instead of WP Cron. For example, see https://www.nextscripts.com/tutorials/wp-cron-scheduling-tasks-in-wordpress.
The plugin uses a custom content type for each Power BI component to embed (dashboard, report, etc.). Go to “All Power BI Items” to add a new component.
The Embed Type determines the remaining fields to fill out.
You can also configure how the content is embedded including whether to show the filter pane or page navigation along with the language (defines the language Power BI uses for localization and locale format (defines the text formatting that powerBI uses for dates, currency, etc.). Finally, you can set the default width and height for the container in pixels or as a percentage.
When installing or upgrading this plugin you may run into display errors when using a CDN, cache plugin or security plugin. The following can be done to fix most caching/security plugin issues.
Once the Power BI content is created in WordPress, you can embed it anywhere with a shortcode. The shortcode accepts the unique identifier for the Power BI content (visible from “All Power BI Items”) and an optional width and height to customize the size of the content where it is being embedded, if you want to override the default width and/or height for the content.
[powerbi id=X width=X height=X]
You also can use a shortcode to display content based on the Power BI Embedded resource state. This shortcode allows you to show content when the resource is active and other content when the resource is paused.
Display the content when resource is active.
[powerbi_resource]
Resource is active.
[/powerbi_resource]
Display the content when resource is paused.
[powerbi_resource state="Paused"]
Resource is paused.
[/powerbi_resource]
Learn more about states. https://docs.microsoft.com/en-us/rest/api/power-bi-embedded/capacities/getdetails#state
The plugin is able to filter Reports using the [https://github.com/Microsoft/PowerBI-JavaScript/wiki/Filters](Report Level Filters) API functions in PowerBI embedded. To use filters you need to pass the filter object in the querystring as a serialized JSON string.
Example
var relatedFilterObj = [{
$schema : "http://powerbi.com/product/schema#basic",
target : {
table : "Countries",
column : "Country",
},
operator : "=",
values : [country]
}
];
var relatedURL = pageURL + "?filters=" + encodeURIComponent(JSON.stringify(relatedFilterObj));<h3>Applying Slicers</h3>The plugin can also apply Slicers before the report loads based on passing stringified JSON in the URL. Read more about [Slicers](https://github.com/Microsoft/PowerBI-JavaScript/wiki/Slicers)
Example
var slicers = [
{
selector : {
$schema: "http://powerbi.com/product/schema#visualSelector",
visualName: "fee64d853d2c3e579085"
},
state : {
filters : [
{
$schema: "http://powerbi.com/product/schema#basic",
target : {
table : "Tools",
column : "Tool"
},
operator: "In",
values: ["Information Operations"],
}
]
}
}
];
var relatedURL = pageURL + "?slicers=" + encodeURIComponent(JSON.stringify(slicers));