__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
namespace EssentialBlocks\Blocks;
use EssentialBlocks\Core\Block;
class Text extends Block
{
/**
* Unique name of the block.
*
* @return string
*/
public function get_name()
{
return 'text';
}
protected static $default_attributes = [
'source' => 'custom',
'tagName' => 'p',
'enableLink' => false,
'openInNewTab' => false,
'excerptLength' => 20
];
/**
* Check if we're in a Loop Builder context
*
* @param array $context
* @return bool
*/
private function is_in_loop_builder_context( $context )
{
return isset( $context[ 'essential-blocks/isLoopBuilder' ] ) &&
$context[ 'essential-blocks/isLoopBuilder' ] === true;
}
/**
* Get post ID from context (Loop Builder) or current post
*
* @param array $context
* @param bool $is_in_loop_builder
* @return int
*/
private function get_post_id( $context, $is_in_loop_builder )
{
if ( $is_in_loop_builder ) {
// In Loop Builder context - use context post data
return isset( $context[ 'essential-blocks/postId' ] ) ?
$context[ 'essential-blocks/postId' ] :
( isset( $context[ 'postId' ] ) ? $context[ 'postId' ] : get_the_ID() );
}
// Normal context - use current post
return get_the_ID();
}
/**
* Truncate excerpt content based on word count
*
* @param string $excerpt
* @param int $length
* @return string
*/
private function truncate_excerpt( $excerpt, $length )
{
if ( empty( $excerpt ) || $length <= 0 ) {
return $excerpt;
}
// Strip HTML tags first
$excerpt = wp_strip_all_tags( $excerpt );
// Split into words
$words = preg_split( '/\s+/', trim( $excerpt ) );
// If excerpt is shorter than or equal to the limit, return as is
if ( count( $words ) <= $length ) {
return $excerpt;
}
// Truncate and add ellipsis
$truncated_words = array_slice( $words, 0, $length );
return implode( ' ', $truncated_words ) . '...';
}
/**
* Block render callback.
*
* @param mixed $attributes
* @param mixed $content
* @param mixed $block
* @return mixed
*/
public function render_callback( $attributes, $content, $block = null )
{
if ( is_admin() ) {
return;
}
$attributes = wp_parse_args( $attributes, self::$default_attributes );
$className = isset( $attributes[ "className" ] ) ? $attributes[ "className" ] : "";
$classHook = isset( $attributes[ 'classHook' ] ) ? $attributes[ 'classHook' ] : '';
if ( $attributes[ 'source' ] === 'custom' ) {
return $content;
} else {
// Check if we're in a Loop Builder context
$context = isset( $block->context ) ? $block->context : [];
$is_in_loop_builder = $this->is_in_loop_builder_context( $context );
$tag_name = $attributes[ 'tagName' ];
$content = '';
if ( $attributes[ 'source' ] === 'dynamic-content' && is_single() ) {
$tag_name = 'div';
$content = get_the_content();
} else if ( $attributes[ 'source' ] === 'dynamic-excerpt' ) {
// Get post ID based on context (Loop Builder or current post)
$post_id = $this->get_post_id( $context, $is_in_loop_builder );
// Get excerpt content
if ( $post_id ) {
$content = get_the_excerpt( $post_id );
} else {
$content = get_the_excerpt();
}
// Apply excerpt length truncation if in Loop Builder context and excerptLength is set
if ( $is_in_loop_builder && isset( $attributes['excerptLength'] ) && $attributes['excerptLength'] > 0 ) {
$content = $this->truncate_excerpt( $content, $attributes['excerptLength'] );
}
}
if ( ! $content ) {
return '';
}
$_parent_classes = [
'eb-parent-wrapper',
'eb-parent-' . $attributes[ 'blockId' ],
$className,
$classHook
];
$_wrapper_classes = [
'eb-text-wrapper',
$attributes[ 'blockId' ]
];
$parent_attributes = get_block_wrapper_attributes( [ 'class' => implode( ' ', $_parent_classes ) ] );
$wrapper_attributes = get_block_wrapper_attributes( [
'class' => implode( ' ', $_wrapper_classes ),
'data-id' => $attributes[ 'blockId' ]
] );
$wrapper = sprintf( '
<div %1$s>
<div %2$s>
<%3$s class="eb-text">%4$s</%3$s>
</div>
</div>',
$parent_attributes,
$wrapper_attributes,
$tag_name,
$content
);
return wp_kses_post( $wrapper );
}
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Accordion.php | File | 1.03 KB | 0640 |
|
| AccordionItem.php | File | 335 B | 0640 |
|
| AddToCart.php | File | 3.43 KB | 0640 |
|
| AdvancedHeading.php | File | 5.73 KB | 0640 |
|
| AdvancedImage.php | File | 2.77 KB | 0640 |
|
| AdvancedNavigation.php | File | 703 B | 0640 |
|
| AdvancedTabs.php | File | 886 B | 0640 |
|
| AdvancedVideo.php | File | 1021 B | 0640 |
|
| Breadcrumbs.php | File | 11.37 KB | 0640 |
|
| Button.php | File | 3.82 KB | 0640 |
|
| CallToAction.php | File | 365 B | 0640 |
|
| Column.php | File | 220 B | 0640 |
|
| CountDown.php | File | 605 B | 0640 |
|
| DualButton.php | File | 666 B | 0640 |
|
| FeatureList.php | File | 332 B | 0640 |
|
| FlexContainer.php | File | 371 B | 0640 |
|
| FlipBox.php | File | 648 B | 0640 |
|
| FluentForms.php | File | 3.77 KB | 0640 |
|
| Form.php | File | 5.72 KB | 0640 |
|
| FormTextField.php | File | 246 B | 0640 |
|
| GoogleMap.php | File | 2.55 KB | 0640 |
|
| Icon.php | File | 323 B | 0640 |
|
| ImageComparison.php | File | 620 B | 0640 |
|
| ImageGallery.php | File | 2.26 KB | 0640 |
|
| InfoBox.php | File | 761 B | 0640 |
|
| InstagramFeed.php | File | 5.89 KB | 0640 |
|
| InteractivePromo.php | File | 321 B | 0640 |
|
| LottieAnimation.php | File | 608 B | 0640 |
|
| NftGallery.php | File | 649 B | 0640 |
|
| Notice.php | File | 580 B | 0640 |
|
| NumberCounter.php | File | 598 B | 0640 |
|
| Openverse.php | File | 480 B | 0640 |
|
| ParallaxSlider.php | File | 664 B | 0640 |
|
| PopUp.php | File | 625 B | 0640 |
|
| PostBlock.php | File | 1.57 KB | 0640 |
|
| PostCarousel.php | File | 4.62 KB | 0640 |
|
| PostGrid.php | File | 5.79 KB | 0640 |
|
| PostMeta.php | File | 7.24 KB | 0640 |
|
| PricingTable.php | File | 333 B | 0640 |
|
| ProductDetails.php | File | 3.51 KB | 0640 |
|
| ProductImages.php | File | 2.83 KB | 0640 |
|
| ProductPrice.php | File | 4.75 KB | 0640 |
|
| ProductRating.php | File | 2.97 KB | 0640 |
|
| ProgressBar.php | File | 604 B | 0640 |
|
| Row.php | File | 455 B | 0640 |
|
| ShapeDivider.php | File | 602 B | 0640 |
|
| Slider.php | File | 1.09 KB | 0640 |
|
| Social.php | File | 352 B | 0640 |
|
| SocialShare.php | File | 3.89 KB | 0640 |
|
| Tab.php | File | 214 B | 0640 |
|
| TableOfContents.php | File | 17.38 KB | 0640 |
|
| Taxonomy.php | File | 4.92 KB | 0640 |
|
| TeamMember.php | File | 361 B | 0640 |
|
| Testimonial.php | File | 373 B | 0640 |
|
| Text.php | File | 5.17 KB | 0640 |
|
| ToggleContent.php | File | 613 B | 0640 |
|
| TypingText.php | File | 594 B | 0640 |
|
| WPForms.php | File | 2.92 KB | 0640 |
|
| WooProductGrid.php | File | 8.39 KB | 0640 |
|
| Wrapper.php | File | 359 B | 0640 |
|
| price.php | File | 239 B | 0640 |
|