Shortcodes: only register when needed (#526)
This commit is contained in:
parent
ff58070a5e
commit
33b61ca2b9
4 changed files with 26 additions and 8 deletions
|
@ -69,7 +69,6 @@ function plugin_init() {
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Collection\Followers', 'init' ) );
|
\add_action( 'init', array( __NAMESPACE__ . '\Collection\Followers', 'init' ) );
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Admin', 'init' ) );
|
\add_action( 'init', array( __NAMESPACE__ . '\Admin', 'init' ) );
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Hashtag', 'init' ) );
|
\add_action( 'init', array( __NAMESPACE__ . '\Hashtag', 'init' ) );
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Shortcodes', 'init' ) );
|
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Mention', 'init' ) );
|
\add_action( 'init', array( __NAMESPACE__ . '\Mention', 'init' ) );
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Health_Check', 'init' ) );
|
\add_action( 'init', array( __NAMESPACE__ . '\Health_Check', 'init' ) );
|
||||||
\add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) );
|
\add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) );
|
||||||
|
|
|
@ -5,14 +5,9 @@ use function Activitypub\esc_hashtag;
|
||||||
|
|
||||||
class Shortcodes {
|
class Shortcodes {
|
||||||
/**
|
/**
|
||||||
* Class constructor, registering WordPress then Shortcodes
|
* Register the shortcodes
|
||||||
*/
|
*/
|
||||||
public static function init() {
|
public static function register() {
|
||||||
// do not load on admin pages
|
|
||||||
if ( is_admin() ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ( get_class_methods( self::class ) as $shortcode ) {
|
foreach ( get_class_methods( self::class ) as $shortcode ) {
|
||||||
if ( 'init' !== $shortcode ) {
|
if ( 'init' !== $shortcode ) {
|
||||||
add_shortcode( 'ap_' . $shortcode, array( self::class, $shortcode ) );
|
add_shortcode( 'ap_' . $shortcode, array( self::class, $shortcode ) );
|
||||||
|
@ -20,6 +15,17 @@ class Shortcodes {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregister the shortcodes
|
||||||
|
*/
|
||||||
|
public static function unregister() {
|
||||||
|
foreach ( get_class_methods( self::class ) as $shortcode ) {
|
||||||
|
if ( 'init' !== $shortcode ) {
|
||||||
|
remove_shortcode( 'ap_' . $shortcode );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates output for the 'ap_hashtags' shortcode
|
* Generates output for the 'ap_hashtags' shortcode
|
||||||
*
|
*
|
||||||
|
|
|
@ -5,6 +5,7 @@ use WP_Post;
|
||||||
use Activitypub\Collection\Users;
|
use Activitypub\Collection\Users;
|
||||||
use Activitypub\Model\Blog_User;
|
use Activitypub\Model\Blog_User;
|
||||||
use Activitypub\Activity\Base_Object;
|
use Activitypub\Activity\Base_Object;
|
||||||
|
use Activitypub\Shortcodes;
|
||||||
|
|
||||||
use function Activitypub\esc_hashtag;
|
use function Activitypub\esc_hashtag;
|
||||||
use function Activitypub\is_single_user;
|
use function Activitypub\is_single_user;
|
||||||
|
@ -466,6 +467,8 @@ class Post {
|
||||||
$post = $this->wp_post;
|
$post = $this->wp_post;
|
||||||
$content = $this->get_post_content_template();
|
$content = $this->get_post_content_template();
|
||||||
|
|
||||||
|
// Register our shortcodes just in time.
|
||||||
|
Shortcodes::register();
|
||||||
// Fill in the shortcodes.
|
// Fill in the shortcodes.
|
||||||
setup_postdata( $post );
|
setup_postdata( $post );
|
||||||
$content = do_shortcode( $content );
|
$content = do_shortcode( $content );
|
||||||
|
@ -477,6 +480,9 @@ class Post {
|
||||||
|
|
||||||
$content = \apply_filters( 'activitypub_the_content', $content, $post );
|
$content = \apply_filters( 'activitypub_the_content', $content, $post );
|
||||||
|
|
||||||
|
// Don't need these any more, should never appear in a post.
|
||||||
|
Shortcodes::unregister();
|
||||||
|
|
||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
|
use Activitypub\Shortcodes;
|
||||||
|
|
||||||
class Test_Activitypub_Shortcodes extends WP_UnitTestCase {
|
class Test_Activitypub_Shortcodes extends WP_UnitTestCase {
|
||||||
|
|
||||||
public function test_content() {
|
public function test_content() {
|
||||||
|
Shortcodes::register();
|
||||||
global $post;
|
global $post;
|
||||||
|
|
||||||
$post_id = -99; // negative ID, to avoid clash with a valid post
|
$post_id = -99; // negative ID, to avoid clash with a valid post
|
||||||
|
@ -26,9 +30,11 @@ class Test_Activitypub_Shortcodes extends WP_UnitTestCase {
|
||||||
wp_reset_postdata();
|
wp_reset_postdata();
|
||||||
|
|
||||||
$this->assertEquals( '<p>hallo</p>', $content );
|
$this->assertEquals( '<p>hallo</p>', $content );
|
||||||
|
Shortcodes::unregister();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_password_protected_content() {
|
public function test_password_protected_content() {
|
||||||
|
Shortcodes::register();
|
||||||
global $post;
|
global $post;
|
||||||
|
|
||||||
$post_id = -98; // negative ID, to avoid clash with a valid post
|
$post_id = -98; // negative ID, to avoid clash with a valid post
|
||||||
|
@ -54,5 +60,6 @@ class Test_Activitypub_Shortcodes extends WP_UnitTestCase {
|
||||||
wp_reset_postdata();
|
wp_reset_postdata();
|
||||||
|
|
||||||
$this->assertEquals( '', $content );
|
$this->assertEquals( '', $content );
|
||||||
|
Shortcodes::unregister();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue