There's a Docker configuration to bootstrap a local WordPress installation. To start it:
- You'll need both Docker and yarn installed on your local machine.
- From the root directory, run
$ yarn
to install the frontend dependencies. - Once that's done, run
$ make run
to build the docker image. - Install wordpress with the default values by running
$ make install
. - Activate the Disqus plugin using
$ make activate
. - Alternatively you can now complete configuration by going to: http://localhost:8888/wp-admin/install.php
- Otherwise you can continue to: http://localhost:8888/
To run unit tests locally:
- Install Composer, yarn and MySQL.
- From the root project directory, run
$ yarn
,$ composer install
and$ composer global require "phpunit/phpunit=4.8.*"
(You may change the version to6.*
if you're running PHP >= 7.0). - To create the WordPress test instance, run
$ bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
- You should now be able to run
$ make test
to run both the PHPUnit tests and the frontend JavaScript tests.
To install the plugin on an existing WordPress site, you'll need to build the frontend and create a .zip file:
- Make sure you have yarn installed on your local machine.
- From the root directory, run
$ make dist
. - From your WordPress plugin page, select Plugins->Add New->Upload Plugin and choose the
disqus.zip
file you created. - Activate the plugin and then install using the instructions in the plugin.
You can override when Disqus loads on a certain page using the dsq_can_load
filter. By default Disqus won't load scripts on:
- On RSS feed pages
- If the
shortname
is missing from the configuration
Additionally Disqus will not load the embed.js script:
- On pages that are not 'post' or 'page' types
- Posts or pages that have comment turned off
- Draft posts
The filter will pass one argument, the $script_name
enumeration, which can be:
'count'
— The count.js script file for showing comment counts next to a link'embed'
— The commenting embed.js file
In this example, you can add a filter which disables the comment count script, while still allowing the comments embed to load:
function filter_dsq_can_load( $script_name ) {
// $script_name is either 'count' or 'embed'.
if ( 'count' === $script_name ) {
return false;
}
return true;
}
add_filter( 'dsq_can_load', 'filter_dsq_can_load' );