: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$source = 'wpforms-custom';
* Determine template categories.
* @param array $template Template data.
* @return string Template categories coma separated.
private function get_template_categories( $template ) {
$categories = ! empty( $template['categories'] ) ? (array) $template['categories'] : [];
$source = $this->get_template_source( $template );
if ( $source === 'wpforms-addon' ) {
$categories[] = 'addons';
if ( $source === 'wpforms-custom' ) {
$categories[] = 'custom';
if ( isset( $template['created_at'] ) && strtotime( $template['created_at'] ) > strtotime( '-3 Months' ) ) {
return implode( ',', $categories );
* Determine template subcategories.
* @param array $template Template data.
* @return string Template subcategories coma separated.
private function get_template_subcategories( $template ) {
$subcategories = ! empty( $template['subcategories'] ) ? (array) $template['subcategories'] : [];
$subcategories = array_keys( $subcategories );
return implode( ',', $subcategories );
* Determine template fields.
* @param array $template Template data.
* @return string Template fields, comma separated.
private function get_template_fields( array $template ): string {
$fields = ! empty( $template['fields'] ) ? (array) $template['fields'] : [];
* Filter template fields.
* @param array $fields Template fields.
$fields = (array) apply_filters( 'wpforms_setup_template_fields', $fields );
return implode( ',', $fields );
* Get categories templates count.
private function get_count_in_categories() {
$available_templates_count = 0;
$favorites_templates_count = 0;
$user_templates_count = 0;
foreach ( $this->prepared_templates as $template_data ) {
$template = $template_data['template'];
$categories = explode( ',', $template_data['categories'] );
if ( $template['has_access'] ) {
++$available_templates_count;
if ( $template['favorite'] ) {
++$favorites_templates_count;
if ( $template['source'] === 'wpforms-user-template' ) {
if ( is_array( $categories ) ) {
array_push( $all_categories, ...$categories );
$all_categories[] = $categories;
$categories_count = array_count_values( $all_categories );
$categories_count['all'] = count( $this->prepared_templates );
$categories_count['available'] = $available_templates_count;
$categories_count['favorites'] = $favorites_templates_count;
$categories_count['user'] = $user_templates_count;
$categories_count['subcategories'] = $this->get_count_in_subcategories();
return $categories_count;
* Get subcategories templates count.
private function get_count_in_subcategories(): array {
foreach ( $this->prepared_templates as $template_data ) {
$subcategories = explode( ',', $template_data['subcategories'] );
if ( is_array( $subcategories ) ) {
array_push( $all_subcategories, ...$subcategories );
$all_subcategories[] = $subcategories;
return array_count_values( $all_subcategories );