: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
<input class="bws_default_shortcode" type="hidden" name="default" value="[latest_portfolio_items count=3]" />
$script = "function prtfl_shortcode_init() {
$( '.mce-reset #prtfl_display_count' ).on( 'change', function() {
var count = $( '.mce-reset #prtfl_display_count' ).val();
var shortcode = '[latest_portfolio_items count=' + count + ']';
$( '.mce-reset #bws_shortcode_display' ).text( shortcode );
wp_register_script( 'prtfl_display_script', '' );
wp_enqueue_script( 'prtfl_display_script' );
wp_add_inline_script( 'prtfl_display_script', sprintf( $script ) );
<div class="clear"></div>
if ( ! function_exists( 'prtfl_get_data' ) ) {
* Get data for portfolio by ID
* @param int $prtfl_id Portfolio ID.
function prtfl_get_data( $prtfl_id ) {
$post_type = array( 'bws-portfolio' );
$prtfl_images_all = array();
if ( 'all' === $prtfl_id || is_array( $prtfl_id ) ) {
$prtfl_id_list = ( is_array( $prtfl_id ) && ! empty( $prtfl_id ) ) ? $prtfl_id : array();
$args = ( is_array( $prtfl_id ) ) ? array(
'post_type' => 'bws-portfolio',
'include' => $prtfl_id_list,
) : array( 'post_type' => 'bws-portfolio' );
$prtfl_posts = get_posts( $args );
} elseif ( is_int( $prtfl_id ) || is_string( $prtfl_id ) ) {
$prtfl_int_id = is_int( $prtfl_id ) ? $prtfl_id : intval( $prtfl_id );
$prtfl_posts = get_post( $prtfl_int_id );
$prtfl_posts_end = array();
foreach ( (array) $prtfl_posts as $key => $prtfl_post ) {
$prtfl_meta = get_post_meta( $prtfl_post->ID, '' );
unset( $prtfl_meta['_edit_lock'] );
unset( $prtfl_meta['_edit_last'] );
foreach ( $prtfl_meta['prtfl_information'] as $key => $prtfl_information ) {
$prtfl_information = isset( $prtfl_information ) ? unserialize( $prtfl_information ) : '';
$prtfl_meta['prtfl_information'][ $key ] = $prtfl_information;
foreach ( $prtfl_meta['_prtfl_images'] as $key => $prtfl_images ) {
$prtfl_images_all = isset( $prtfl_images ) ? explode( ',', $prtfl_images ) : '';
'post_type' => 'attachment',
'include' => $prtfl_images_all,
$prtfl_images = ! empty( $prtfl_images_all ) ? get_posts( $args ) : '';
$prtfl_meta['_prtfl_images'][ $key ] = $prtfl_images;
$prtfl_posts[ $key ]->prtfl_post_meta = $prtfl_meta;
if ( ! function_exists( 'prtfl_add_tabs' ) ) {
function prtfl_add_tabs() {
$screen = get_current_screen();
if ( ( ! empty( $screen->post_type ) && $prtfl_options['post_type_name'] === $screen->post_type ) ||
( ! empty( $screen->taxonomy ) && 'portfolio_executor_profile' === $screen->taxonomy ) ||
( ! empty( $screen->taxonomy ) && 'portfolio_technologies' === $screen->taxonomy ) ||
( isset( $_GET['page'] ) && 'portfolio.php' === $_GET['page'] ) ) {
'section' => '200538929',
bws_help_tab( $screen, $args );
if ( ! function_exists( 'prtfl_plugin_deactivation' ) ) {
* Action when deactivating the plugin
function prtfl_plugin_deactivation() {
global $wpdb, $prtfl_bws_demo_data;
if ( function_exists( 'is_multisite' ) && is_multisite() ) {
$old_blog = $wpdb->blogid;
$blogids = $wpdb->get_col( "SELECT `blog_id` FROM $wpdb->blogs" );
foreach ( $blogids as $blog_id ) {
switch_to_blog( $blog_id );
prtfl_include_demo_data();
$prtfl_bws_demo_data->bws_remove_demo_data();
switch_to_blog( $old_blog );
global $prtfl_bws_demo_data;
if ( ! $prtfl_bws_demo_data ) {
prtfl_include_demo_data();
$prtfl_bws_demo_data->bws_remove_demo_data();
if ( ! function_exists( 'prtfl_plugin_uninstall' ) ) {
* Action when uninstalling the plugin
function prtfl_plugin_uninstall() {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$plugins_list = get_plugins();
if ( function_exists( 'is_multisite' ) && is_multisite() ) {
$old_blog = $wpdb->blogid;
$blogids = $wpdb->get_col( "SELECT `blog_id` FROM $wpdb->blogs" );
foreach ( $blogids as $blog_id ) {
switch_to_blog( $blog_id );
if ( ! array_key_exists( 'portfolio-pro/portfolio-pro.php', $plugins_list ) ) {
delete_option( 'widget_portfolio_technologies_widget' );
delete_option( 'prtfl_options' );
delete_option( 'prtfl_tag_update' );
delete_post_meta_by_key( 'prtfl_information' );
delete_post_meta_by_key( '_prtfl_images' );
delete_post_meta_by_key( 'prtfl_featured' );
switch_to_blog( $old_blog );
if ( ! array_key_exists( 'portfolio-pro/portfolio-pro.php', $plugins_list ) ) {
delete_option( 'widget_portfolio_technologies_widget' );
delete_option( 'prtfl_options' );
delete_option( 'prtfl_tag_update' );
delete_post_meta_by_key( 'prtfl_information' );
delete_post_meta_by_key( '_prtfl_images' );
delete_post_meta_by_key( 'prtfl_featured' );
require_once dirname( __FILE__ ) . '/bws_menu/bws_include.php';
bws_include_init( plugin_basename( __FILE__ ) );
bws_delete_plugin( plugin_basename( __FILE__ ) );
register_activation_hook( __FILE__, 'prtfl_plugin_activate' );
/* Add portfolio settings page in admin menu */
add_action( 'admin_menu', 'add_prtfl_admin_menu' );
add_action( 'admin_init', 'prtfl_admin_init' );
add_action( 'init', 'prtfl_init' );
add_action( 'plugins_loaded', 'prtfl_plugins_loaded' );
/* Save custom data from admin */
add_action( 'save_post', 'prtfl_save_postdata', 1, 2 );
add_filter( 'content_save_pre', 'prtfl_content_save_pre', 10, 1 );
/* this function add custom fields and images for PDF&Print plugin in Portfolio post */
add_filter( 'bwsplgns_get_pdf_print_content', 'prtfl_add_pdf_print_content' );
add_action( 'admin_enqueue_scripts', 'prtfl_admin_head' );
add_action( 'wp_enqueue_scripts', 'prtfl_wp_enqueue_scripts' );
add_action( 'wp_head', 'prtfl_wp_head' );
add_action( 'wp_footer', 'prtfl_wp_footer' );
/* add theme name as class to body tag */
add_filter( 'body_class', 'prtfl_theme_body_classes' );
/* Add widget for portfolio technologies */
add_action( 'widgets_init', 'prtfl_register_widget' );
add_action( 'wp_ajax_prtfl_update_image', 'prtfl_update_image' );
add_shortcode( 'latest_portfolio_items', 'prtfl_latest_items' );
/* custom filter for bws button in tinyMCE */
add_filter( 'bws_shortcode_button_content', 'prtfl_shortcode_button_content' );
add_filter( 'request', 'prtfl_request_filter' );
/* Display tachnologies taxonomy */
add_filter( 'pre_get_posts', 'prtfl_technologies_get_posts' );
add_filter( 'rewrite_rules_array', 'prtfl_custom_permalinks' );
/* Additional links on the plugin page */
add_filter( 'plugin_row_meta', 'prtfl_register_plugin_links', 10, 2 );
add_filter( 'plugin_action_links', 'prtfl_plugin_action_links', 10, 2 );
add_filter( 'nav_menu_css_class', 'prtfl_add_portfolio_ancestor_to_menu', 10, 2 );
add_action( 'admin_notices', 'prtfl_admin_notices' );
register_deactivation_hook( __FILE__, 'prtfl_plugin_deactivation' ); /* Deactivate plugin */