WordPress小部件前后的空段落标签

kyks70gy  于 2023-03-07  发布在  WordPress
关注(0)|答案(1)|浏览(132)

正在获取空段落标记
在小工具中使用短代码时,在小工具内容之前和之后。

<div class="widget">
    <p></p>
    <div class="social-media">
     <span></span>
    </div>
   <p></p>
</div>

我用下面的代码创建了短代码

<?php
function social_media_shortcode($atts){
    $atts = shortcode_atts(array(
        'class' => 'social-media',
        'items' => 'facebook,twitter,insta,behance,google,linkedin,phone,mail,whatsapp', // Default items array
    ), $atts, 'social_media');

    $itemsArray = explode(',', $atts['items']);

    ob_start();
   ?>
   <div class="<?= esc_attr($atts['class']) ?>">
       <span><?= social_groups($itemsArray) ?></span>
   </div>
   <?php
  $content = ob_get_clean();
  return $content;
}
add_shortcode('social_media', 'social_media_shortcode');

我需要一个钩子来修复或str_replace空的p标记

waxmsbnn

waxmsbnn1#

我发现
标签是由默认的 gutenberg shortcakes小部件添加的,通过创建自定义小部件并使用它添加简码来解决这个问题

<?php
 // Register shortcode widget
class Shortcode_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'shortcode_widget',
            __( 'Shortcode Widget', 'text_domain' ),
            array(
                'description' => __( 'A widget that displays a shortcode.', 'text_domain' ),
            )
        );
    }

    public function widget( $args, $instance ) {
        $shortcode = ! empty( $instance['shortcode'] ) ? $instance['shortcode'] : '';
        echo do_shortcode( $shortcode );
    }

    public function form( $instance ) {
        $shortcode = ! empty( $instance['shortcode'] ) ? $instance['shortcode'] : '';
        ?>
        <p>
            <label for="<?php echo $this->get_field_id( 'shortcode' ); ?>"><?php _e( 'Shortcode:' ); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id( 'shortcode' ); ?>" name="<?php echo $this->get_field_name( 'shortcode' ); ?>" type="text" value="<?php echo esc_attr( $shortcode ); ?>" />
        </p>
        <?php
    }

    public function update( $new_instance, $old_instance ) {
        $instance = array();
        $instance['shortcode'] = ! empty( $new_instance['shortcode'] ) ? $new_instance['shortcode'] : '';

        return $instance;
    }
}
function register_shortcode_widget() {
    register_widget( 'Shortcode_Widget' );
}
add_action( 'widgets_init', 'register_shortcode_widget' );

相关问题