66 lines
1.4 KiB
PHP
66 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* Paywall Block.
|
|
*
|
|
* @since 12.5
|
|
*
|
|
* @package automattic/jetpack
|
|
*/
|
|
|
|
namespace Automattic\Jetpack\Extensions\Paywall;
|
|
|
|
use Automattic\Jetpack\Blocks;
|
|
|
|
const FEATURE_NAME = 'paywall';
|
|
const BLOCK_NAME = 'jetpack/' . FEATURE_NAME;
|
|
const BLOCK_HTML = '<!-- wp:' . BLOCK_NAME . ' /-->';
|
|
const THE_EXCERPT_BLOCK = '[[[[[' . BLOCK_NAME . ']]]]]';
|
|
|
|
/**
|
|
* Registers the block for use in Gutenberg
|
|
* This is done via an action so that we can disable
|
|
* registration if we need to.
|
|
*/
|
|
function register_block() {
|
|
if ( ! \Jetpack::is_module_active( 'subscriptions' ) ) {
|
|
return;
|
|
}
|
|
if ( ! class_exists( '\Jetpack_Memberships' ) ) {
|
|
return;
|
|
}
|
|
|
|
Blocks::jetpack_register_block(
|
|
__DIR__,
|
|
array(
|
|
'render_callback' => __NAMESPACE__ . '\render_block',
|
|
)
|
|
);
|
|
}
|
|
add_action( 'init', __NAMESPACE__ . '\register_block' );
|
|
|
|
/**
|
|
* Paywall block render callback.
|
|
*
|
|
* @return string
|
|
*/
|
|
function render_block() {
|
|
if ( doing_filter( 'get_the_excerpt' ) ) {
|
|
if ( \Jetpack_Memberships::user_can_view_post() ) {
|
|
return '';
|
|
}
|
|
return THE_EXCERPT_BLOCK;
|
|
}
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Adds the Paywall block to excerpt allowed blocks.
|
|
*
|
|
* @param array $allowed_blocks The allowed blocks.
|
|
*
|
|
* @return array The allowed blocks.
|
|
*/
|
|
function excerpt_allowed_blocks( $allowed_blocks ) {
|
|
return array_merge( $allowed_blocks, array( Blocks::get_block_name( __DIR__ ) ) );
|
|
}
|
|
add_filter( 'excerpt_allowed_blocks', __NAMESPACE__ . '\excerpt_allowed_blocks' );
|