wpmetabox / meta-box

The best plugin for WordPress custom fields and custom meta boxes
https://metabox.io
1.18k stars 423 forks source link

Cloning Doesnt Work with Yoast SEO plugin activated #854

Closed joeporterme closed 8 years ago

joeporterme commented 8 years ago

Think there is a javascript issue. Just tested... I had Yoast SEO plugin installed.. created my cloning fields and cloning didnt work. Deactivated Yoast and boom cloning was working. Also the drag and drop image fields

rilwis commented 8 years ago

@funkedgeek Please look at this issue

joeporterme commented 8 years ago

FYI - Yoast 3.2.5 came out... tested and still an issue.

funkatron82 commented 8 years ago

Not able to replicate this bug. cloning is working for me. Are you getting any errors in the JavaScript console?

joeporterme commented 8 years ago

Here is a screencast of hit happening with Console Open.

https://www.dropbox.com/s/1fvypgorgw0zofv/yoastmetabox.mov?dl=0

error seems to be coming in the wp-seo-post-scraper-324.min.js

Just letting you know, im running a child theme off Wordpress 2016 theme.

funkatron82 commented 8 years ago

Looks like a bug that is preventing other JavaScript code from running. I'm still not able to replicate it, though

joeporterme commented 8 years ago

Doing a google search on the error looks like someone else has an issue with it and metabox.io and posted a comment over at yoast: https://github.com/Yoast/wordpress-seo/issues/4161

rilwis commented 8 years ago

I'm not able to replicate the bug, neither. @joeporterme: can you please give us more details to track this:

joeporterme commented 8 years ago
<?php
/**
* Plugin Name: Life Network Clients
* Plugin URI: https://greanews.life
* Description: Life Network Clients Management - Manages Advertising and Partner Profiles
* Version: 1.0
* Author: GreatNews.life
* Author URI: greatnews.life
* License: NONE
*/

/**** INCLUDE FILES *******/
include( plugin_dir_path( __FILE__ ) . 'inc/meta-boxes.php');

/**** REMOVE PLUGINS FROM ACCESSING THIS POST TYPE *****/

function prefix_remove_meta_box() {
    remove_meta_box( 'wpseo_meta', 'gnl_clients', 'normal' ); // change custom-post-type into the name of your custom post type
}
  add_action( 'add_meta_boxes', 'prefix_remove_meta_box', 100000 );

// Get the Sites Options On the Network

function gnl_clients_get_sites_info() {
    $sitearray[] = array();
    $args = array(
        'network_id' => null,
        'public'     => null,
        'archived'   => null,
        'mature'     => null,
        'spam'       => null,
        'deleted'    => null,
        'limit'      => 100,
        'offset'     => 0,
    );
    $blogarray = wp_get_sites( $args );

    foreach ($blogarray as $site) :

        // dont include master site in array
        if ($site['blog_id'] != 1) :

            $id = $site['blog_id'];
            $sitesettings[$id] = get_blog_option( $id, 'site_info_option_name');

        endif;

    endforeach;

    return $sitesettings;

}

/*** Setup the Post type and Menu ****/
if ( ! function_exists('gnl_client_function') ) {

// Register Custom Post Type
function gnl_client_function() {

    $labels = array(
        'name'                  => _x( 'Clients', 'Post Type General Name', 'text_domain' ),
        'singular_name'         => _x( 'Client', 'Post Type Singular Name', 'text_domain' ),
        'menu_name'             => __( 'Partners', 'text_domain' ),
        'name_admin_bar'        => __( 'Partners', 'text_domain' ),
        'archives'              => __( 'Partners', 'text_domain' ),
        'parent_item_colon'     => __( 'Parent Partner:', 'text_domain' ),
        'all_items'             => __( 'All Partners', 'text_domain' ),
        'add_new_item'          => __( 'Add New Partner', 'text_domain' ),
        'add_new'               => __( 'Add New', 'text_domain' ),
        'new_item'              => __( 'New Partner', 'text_domain' ),
        'edit_item'             => __( 'Edit Partner', 'text_domain' ),
        'update_item'           => __( 'Update Partner', 'text_domain' ),
        'view_item'             => __( 'View Partner', 'text_domain' ),
        'search_items'          => __( 'Search Partners', 'text_domain' ),
        'not_found'             => __( 'Not found', 'text_domain' ),
        'not_found_in_trash'    => __( 'Not found in Trash', 'text_domain' ),
        'featured_image'        => __( 'Partner Logo (PNG)', 'text_domain' ),
        'set_featured_image'    => __( 'Set Partner Logo', 'text_domain' ),
        'remove_featured_image' => __( 'Remove Partner Logo', 'text_domain' ),
        'use_featured_image'    => __( 'Use as Partner Logo', 'text_domain' ),
        'insert_into_item'      => __( 'Insert into Partner', 'text_domain' ),
        'uploaded_to_this_item' => __( 'Uploaded to this Partner', 'text_domain' ),
        'items_list'            => __( 'Partners list', 'text_domain' ),
        'items_list_navigation' => __( 'Partners list navigation', 'text_domain' ),
        'filter_items_list'     => __( 'Filter Partners list', 'text_domain' ),
    );
    $rewrite = array(
        'slug'                  => 'partner',
        'with_front'            => true,
        'pages'                 => false,
        'feeds'                 => true,
    );
    $capabilities = array(
        'edit_post'             => 'edit_partner',
        'read_post'             => 'read_partner',
        'delete_post'           => 'delete_partner',
        'edit_posts'            => 'edit_partners',
        'edit_others_posts'     => 'edit_others_partners',
        'publish_posts'         => 'publish_partners',
        'read_private_posts'    => 'read_private_partners',
    );
    $args = array(
        'label'                 => __( 'Partners', 'text_domain' ),
        'description'           => __( 'Partners Management', 'text_domain' ),
        'labels'                => $labels,
        'supports'              => array( 'title', 'thumbnail', 'revisions', ),
        'hierarchical'          => true,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 5,
        'menu_icon'             => 'dashicons-groups',
        'show_in_admin_bar'     => true,
        'show_in_nav_menus'     => true,
        'can_export'            => true,
        'has_archive'           => false,
        'exclude_from_search'   => true,
        'publicly_queryable'    => true,
        'rewrite'               => $rewrite,
        'capabilities'          => $capabilities,
    );
    register_post_type( 'gnl_clients', $args );

}
add_action( 'init', 'gnl_client_function', 0 );

}`

`$lifesites = gnl_clients_get_sites_info();
$sites[] = array();
//setup checkbox list for sites
foreach($lifesites as $key => $site) :
    $sites[$key] = $site['site_name_0'];
endforeach;

add_filter( 'rwmb_meta_boxes', 'gnl_clients_register_meta_boxes' );
function gnl_clients_register_meta_boxes( $meta_boxes ) {
        global $sites;
    $prefix = 'gnl_clients_billing_';
        // 1st meta box
    $meta_boxes[] = array(
        'id'         => 'billing',
        'title'      => __( 'Billing Information', 'textdomain' ),
        'post_types' => array( 'gnl_clients' ),
        'context'    => 'normal',
        'priority'   => 'high',
                'validation' => array(
                        'rules'    => array(
                                "{$prefix}address" => array(
                                        'required'  => true,
                                        // More rules here
                                ),
                                "{$prefix}city" => array(
                                        'required'  => true,
                                        // More rules here
                                ),
                                "{$prefix}state" => array(
                                        'required'  => true,
                                        'maxlength' => 2,
                                        'minlength' => 2
                                        // More rules here
                                ),
                                "{$prefix}zip" => array(
                                        'required'  => true,
                                        'digits' => true,
                                        'maxlength' => 5,
                                        'minlength' => 5
                                        // More rules here
                                ),
                                // Rules for other fields
                        ),
                ),
        'fields' => array(
            array(
                'name'  => __( 'Billing Address', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'address',
                'type'  => 'text',
                'std'   => '',
                'class' => 'billing-class',
                'size' => '30'

            ),
                        array(
                'name'  => __( 'Billing City', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'city',
                'type'  => 'text',
                'std'   => '',
                'class' => 'billing-class',
                'size' => '30'
            ),
                        array(
                'name'  => __( 'Billing State', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'state',
                'type'  => 'text',
                'std'   => '',
                'class' => 'billing-class',
                'size' => '2'
            ),
                        array(
                'name'  => __( 'Billing Zip', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'zip',
                'type'  => 'text',
                'std'   => '',
                'class' => 'billing-class',
                'size' => '5'
            ),
                        array(
                                'name'  => __( 'Client Notes', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix . 'notes',
                                'type'  => 'textarea',
                                'std'   => '',
                                'class' => 'billing-class',
                                'rows' => '8'
                        ),
                        array(
                'name'  => __( 'Activate Partner Profile', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'service_profile',
                'type'  => 'checkbox',
                'class' => 'billing-class',
            ),
                        array(
                'name'  => __( 'Activate Banner Ads', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'service_banners',
                'type'  => 'checkbox',
                'class' => 'billing-class',
            ),
                        array(
                'name'  => __( 'Activate Photo Sponsors', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'service_photos',
                'type'  => 'checkbox',
                'class' => 'billing-class',
            ),
                        array(
                'name'  => __( 'Activate Video Sponsors', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix . 'service_video',
                'type'  => 'checkbox',
                'class' => 'billing-class',
            ),
        )
            );
            $prefix_contacts = 'gnl_clients_contacts_';
            $meta_boxes[] = array(
            'id'         => 'contacts',
            'title'      => __( 'Client Contacts', 'textdomain' ),
            'post_types' => array( 'gnl_clients' ),
            'context'    => 'normal',
            'priority'   => 'high',
            'fields' => array(
                array(
                    'name'  => __( 'Billing Contact Name', 'textdomain' ),
                    'desc'  => '',
                    'id'    => $prefix_contacts . 'billing_name',
                    'type'  => 'text',
                    'std'   => '',
                    'class' => 'billing-class',
                    'size' => '30'
                ),
                            array(
                    'name'  => __( 'Billing Contact Email', 'textdomain' ),
                    'desc'  => '',
                    'id'    => $prefix_contacts . 'billing_email',
                    'type'  => 'text',
                    'std'   => '',
                    'class' => 'billing-class',
                    'size' => '30'
                ),
                            array(
                    'name'  => __( 'Billing Contact Phone', 'textdomain' ),
                    'desc'  => '',
                    'id'    => $prefix_contacts . 'billing_phone',
                    'type'  => 'text',
                    'std'   => '',
                    'class' => 'billing-class',
                    'size' => '30'
                ),
                            array(
                    'name'  => __( 'Content Contact Name', 'textdomain' ),
                    'desc'  => '',
                    'id'    => $prefix_contacts . 'content_name',
                    'type'  => 'text',
                    'std'   => '',
                    'class' => 'billing-class',
                    'size' => '30'
                ),
                            array(
                    'name'  => __( 'Content Contact Email', 'textdomain' ),
                    'desc'  => '',
                    'id'    => $prefix_contacts . 'content_email',
                    'type'  => 'text',
                    'std'   => '',
                    'class' => 'billing-class',
                    'size' => '30'
                ),
                            array(
                    'name'  => __( 'Content Contact Phone', 'textdomain' ),
                    'desc'  => '',
                    'id'    => $prefix_contacts . 'content_phone',
                    'type'  => 'text',
                    'std'   => '',
                    'class' => 'billing-class',
                    'size' => '30'
                ),
            )
    );
        $prefix_profile = 'gnl_clients_profile_';
        $meta_boxes[] = array(
                'id'         => 'profile',
                'title'      => __( 'Partner Profile', 'textdomain' ),
                'post_types' => array( 'gnl_clients' ),
                'context'    => 'normal',
                'priority'   => 'high',
                'fields' => array(
                        array(
                                'name'  => __( 'Published On:', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_profile . 'sites',
                                'type'  => 'checkbox_list',
                                'class' => 'profile-class',
                                'options'=> $sites,
                        ),

                        array(
                                'name'  => __( 'Profile About Section', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_profile . 'about',
                                'type'  => 'textarea',
                                'std'   => '',
                                'class' => 'profile-class',
                                'rows' => '8'
                        ),
                        array(
                'name'  => __( 'Profile Address', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix_profile . 'address',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30'
            ),
                        array(
                'name'  => __( 'Profile City', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix_profile . 'city',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30'
            ),
                        array(
                'name'  => __( 'Profile State', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix_profile . 'state',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '2'
            ),
                        array(
                'name'  => __( 'Profile Zip', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix_profile . 'zip',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '5'
            ),
                        array(
                'name'  => __( 'Profile Location Description', 'textdomain' ),
                'desc'  => 'example: "We have 15 locations through out NW Indiana"',
                'id'    => $prefix_profile . 'loc_desc',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30'
            ),
                        array(
                'name'  => __( 'Facebook ID', 'textdomain' ),
                'desc'  => 'http://findmyfbid.com/',
                'id'    => $prefix_profile . 'facebook',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'clone' => true
            ),
                        array(
                'name'  => __( 'Twitter Username', 'textdomain' ),
                'desc'  => 'without @',
                'id'    => $prefix_profile . 'twitter',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'clone'=> true
            ),
                        array(
                'name'  => __( 'Instagram Username', 'textdomain' ),
                'desc'  => 'without @',
                'id'    => $prefix_profile . 'instagram',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'clone'=> true
            ),
                        array(
                'name'  => __( 'YouTube Channel ID', 'textdomain' ),
                'desc'  => 'http://johnnythetank.github.io/youtube-channel-name-converter/',
                'id'    => $prefix_profile . 'youtube',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'clone'=> true
            ),
                        array(
                'name'  => __( 'LinkedIn URLs', 'textdomain' ),
                'desc'  => 'Direct Page Urls: Example: https://www.linkedin.com/groups/3838410/profile',
                'id'    => $prefix_profile . 'linkedin',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'clone'=> true
            ),
                        array(
                'name'  => __( 'Website URL', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix_profile . 'website',
                'type'  => 'text',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'clone'=> true
            ),
                        array(
                'name'  => __( 'Profile Menu URLS', 'textdomain' ),
                'desc'  => '',
                'id'    => $prefix_profile . 'website_urls',
                'type'  => 'text_list',
                'std'   => '',
                'class' => 'profile-class',
                'size' => '30',
                                'options' => array(
                                        'Link Title' => __( '', $prefix_profile.'link_title' ),
                                        'Link URL' => __( '', $prefix_profile.'link_url' ),
                                ),
                                'clone'=> true
            ),
                        array(
                                'name'  => __( 'Banner Image', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_profile . 'banner_img',
                                'type'  => 'image_advanced',
                                'class' => 'profile-class',
                                'force_delete'     => true,
                                // Maximum image uploads
                                'max_file_uploads' => 1

                        ),
                )

        );
        $prefix_banner = 'gnl_clients_banner_ads_';
        $meta_boxes[] = array(
                'id'         => 'banner_ads',
                'title'      => __( 'Banner Ads', 'textdomain' ),
                'post_types' => array( 'gnl_clients' ),
                'context'    => 'normal',
                'priority'   => 'high',
                'fields' => array(
                        array(
                                'name'  => __( 'Premium Published On:', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_banner . 'premium_sites',
                                'type'  => 'checkbox_list',
                                'class' => 'banner-class',
                                'options'=> $sites,
                        ),
                        array(
                                'name'  => __( 'Premium Image', 'textdomain' ),
                                'desc'  => '600x600 Square',
                                'id'    => $prefix_banner . 'premium_img',
                                'type'  => 'image_advanced',
                                'class' => 'banner-class',
                                'force_delete'     => true,
                                // Maximum image uploads
                                'max_file_uploads' => 1

                        ),
                        array(
                                'name'  => __( 'Premium Destination URL', 'textdomain' ),
                                'desc'  => 'Full URL',
                                'id'    => $prefix_banner . 'premium_url',
                                'type'  => 'text',
                                'class' => 'banner-class',
                                'size' => '30',

                        ),

                        array(
                                'name'  => __( 'Standard Published On:', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_banner . 'premium_sites',
                                'type'  => 'checkbox_list',
                                'class' => 'banner-class',
                                'options'=> $sites,
                        ),
                        array(
                                'name'  => __( 'Standard Image', 'textdomain' ),
                                'desc'  => '600x600 Square',
                                'id'    => $prefix_banner . 'standard_img',
                                'type'  => 'image_advanced',
                                'class' => 'banner-class',
                                'force_delete'     => true,
                                // Maximum image uploads
                                'max_file_uploads' => 1

                        ),
                        array(
                                'name'  => __( 'Standard Destination URL', 'textdomain' ),
                                'desc'  => 'Full URL',
                                'id'    => $prefix_banner . 'standard_url',
                                'type'  => 'text',
                                'class' => 'banner-class',
                                'size' => '30',

                        ),

                        array(
                                'name'  => __( 'Basic Published On:', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_banner . 'basic_sites',
                                'type'  => 'checkbox_list',
                                'class' => 'banner-class',
                                'options'=> $sites,
                        ),
                        array(
                                'name'  => __( 'Basic Image', 'textdomain' ),
                                'desc'  => '600x600 Square',
                                'id'    => $prefix_banner . 'basic_img',
                                'type'  => 'image_advanced',
                                'class' => 'banner-class',
                                'force_delete'     => true,
                                // Maximum image uploads
                                'max_file_uploads' => 1

                        ),
                        array(
                                'name'  => __( 'Basic Destination URL', 'textdomain' ),
                                'desc'  => 'Full URL',
                                'id'    => $prefix_banner . 'basic_url',
                                'type'  => 'text',
                                'class' => 'banner-class',
                                'size' => '30',

                        ),

                        array(
                                'name'  => __( 'Site Sponsor Published On:', 'textdomain' ),
                                'desc'  => '',
                                'id'    => $prefix_banner . 'sponsor_sites',
                                'type'  => 'checkbox_list',
                                'class' => 'banner-class',
                                'options'=> $sites,
                        ),
                        array(
                                'name'  => __( 'Site Sponsor Image', 'textdomain' ),
                                'desc'  => '1960x164 Rectangle',
                                'id'    => $prefix_banner . 'sponsor_img',
                                'type'  => 'image_advanced',
                                'class' => 'banner-class',
                                'force_delete'     => true,
                                // Maximum image uploads
                                'max_file_uploads' => 1

                        ),
                        array(
                                'name'  => __( 'Site Sponsor Destination URL', 'textdomain' ),
                                'desc'  => 'Full URL',
                                'id'    => $prefix_banner . 'sponsor_url',
                                'type'  => 'text',
                                'class' => 'banner-class',
                                'size' => '30',

                        ),
                )

        );
    return $meta_boxes;
}
joeporterme commented 8 years ago

signed in as administrator

rilwis commented 8 years ago

Awesome, let me work on it now.

joeporterme commented 8 years ago

oh.. maybe this will help or not... but i am on a Wordpress Multisite Install ... not sure if that is something you should know

rilwis commented 8 years ago

Just found the bug!

You removed the Yoast SEO meta box with this code

function prefix_remove_meta_box() {
    remove_meta_box( 'wpseo_meta', 'gnl_clients', 'normal' );
}
add_action( 'add_meta_boxes', 'prefix_remove_meta_box', 100000 );

That makes the Yoast SEO JavaScript code breaks because it couldn't find the elements to update the SEO results. Removing the code fixes the bug.

I suggest you use CSS to hide Yoast SEO meta box instead of removing it :) Just enqueue a simple CSS file or output CSS in the <head> section.

joeporterme commented 8 years ago

oh man! thanks so much... i guess its not a bug for meta-box sorry for the goose chase... i guess i wish yoast made it easy to disable on custom post types :(

rilwis commented 8 years ago

Yeah, you should open an issue for Yoast SEO then :). I'm sure they're glad to receive feedback.