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__ . '\Admin', '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__ . '\Health_Check', 'init' ) );
|
||||
\add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) );
|
||||
|
|
|
@ -5,14 +5,9 @@ use function Activitypub\esc_hashtag;
|
|||
|
||||
class Shortcodes {
|
||||
/**
|
||||
* Class constructor, registering WordPress then Shortcodes
|
||||
* Register the shortcodes
|
||||
*/
|
||||
public static function init() {
|
||||
// do not load on admin pages
|
||||
if ( is_admin() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
public static function register() {
|
||||
foreach ( get_class_methods( self::class ) as $shortcode ) {
|
||||
if ( 'init' !== $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
|
||||
*
|
||||
|
|
|
@ -5,6 +5,7 @@ use WP_Post;
|
|||
use Activitypub\Collection\Users;
|
||||
use Activitypub\Model\Blog_User;
|
||||
use Activitypub\Activity\Base_Object;
|
||||
use Activitypub\Shortcodes;
|
||||
|
||||
use function Activitypub\esc_hashtag;
|
||||
use function Activitypub\is_single_user;
|
||||
|
@ -466,6 +467,8 @@ class Post {
|
|||
$post = $this->wp_post;
|
||||
$content = $this->get_post_content_template();
|
||||
|
||||
// Register our shortcodes just in time.
|
||||
Shortcodes::register();
|
||||
// Fill in the shortcodes.
|
||||
setup_postdata( $post );
|
||||
$content = do_shortcode( $content );
|
||||
|
@ -477,6 +480,9 @@ class 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;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
<?php
|
||||
use Activitypub\Shortcodes;
|
||||
|
||||
class Test_Activitypub_Shortcodes extends WP_UnitTestCase {
|
||||
|
||||
public function test_content() {
|
||||
Shortcodes::register();
|
||||
global $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();
|
||||
|
||||
$this->assertEquals( '<p>hallo</p>', $content );
|
||||
Shortcodes::unregister();
|
||||
}
|
||||
|
||||
public function test_password_protected_content() {
|
||||
Shortcodes::register();
|
||||
global $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();
|
||||
|
||||
$this->assertEquals( '', $content );
|
||||
Shortcodes::unregister();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue