Title: Beginner needs PHP help on arrays
Last modified: August 22, 2016

---

# Beginner needs PHP help on arrays

 *  [KeithAdv](https://wordpress.org/support/users/keithadv/)
 * (@keithadv)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/)
 * I’m using a theme that creates a custom post type with the name “Events.”
 * Here’s the code that creates it from the theme’s functions.php:
 *     ```
       add_action('init', 'create_event');
   
       function create_event() {
           	$event_args = array(
               	'label' => __('Events', 'jollytheme' ),
               	'singular_label' => __('Event Item', 'jollytheme' ),
               	'public' => true,
               	'show_ui' => true,
               	'capability_type' => 'post',
               	'hierarchical' => false,
               	'rewrite' => array('slug' => __('event', 'jollytheme' )) ,
               	'supports' => array('title', 'editor', 'thumbnail','comments'),
       			'taxonomies' => array('post_tag')
               );
           	register_post_type('event',$event_args);
       	}
       ```
   
 * This is the line I’m concerned with:
 * `'rewrite' => array('slug' => __('event', 'jollytheme' )) ,`
 * It turns out that naming the slug “event” here conflicts with a plugin on that
   site. I’m not actually using this post type and don’t plan to. Luckily, I found
   out that I can simply change the name of the slug on this line and everything
   will work fine. So, I’m OK with this kludgy solution.
 * Unless, of course, the theme updates. That’s why I always try to do my changes
   in child themes.
 * So, that leads to my question. Is there code I can put in my child theme’s functions.
   php that will make that change, so I can leave the theme’s actual functions.php
   untouched? I’ve already discovered that I can’t just take the above code and 
   replicate it there because it causes a “cannot redeclare” error.
 * Grateful for all suggestions…

Viewing 7 replies - 1 through 7 (of 7 total)

 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720683)
 * PHP is very powerful, it would be possible to parse through the theme file to
   locate the offending code and alter it, then juggle input and output files. I
   strongly discourage such an approach. The code would be quite fragile. You cannot
   know how the theme’s code may change in a way that breaks your repair script.
   At best this would be an “if all else fails…” solution.
 * You should also examine the plugin to see if a hook or setting is available that
   could be used to eliminate the conflict.
 * If adding the CPT is indeed the only thing done in the `create_event()` function
   and you have no need for the CPT, try removing the function from the ‘init’ action.
   This would work as long as your child functions.php runs after the parent’s functions.
   php, which I believe is the case. Otherwise remove it from the ‘after_setup_theme’
   action. The lack of an ‘event’ CPT could very well cause other errors in the 
   theme. Define ‘WP_DEBUG’ as true in wp-config.php, then thoroughly check your
   site for problems after implementing this solution.
 * Another possibility would be to alter the ‘event’ label in the global `$wp_rewrite`
   array. The code to do so should be hooked to the ‘wp_loaded’ action which fires
   after ‘init’. You may need to manually toggle your permalink settings to something
   else then back again in case the rewrite change impacts the .htaccess file.
 * Consider these as mere ideas and avenues of investigation, not workable solutions.
   I hope one of them will work for you though.
 *  Thread Starter [KeithAdv](https://wordpress.org/support/users/keithadv/)
 * (@keithadv)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720736)
 * I think I follow. However, I want to clarify what I’m trying to do. I may have
   overexplained it.
 * In the theme’s functions.php, the slug is set to the word ‘event’. I’ve already
   discovered that all my problems get solved if I change the word ‘event’ to something
   else on that line. (I did re-save Permalinks after). That’s where the code stands
   right now and I’m happy with it.
 * (And no, I never use the CPT in question.)
 * I’m simply trying to bulletproof this solution against a possible theme update
   by transferring it to my child theme’s functions.php, which gets called after
   the original theme’s functions.php. I would restore the original functions.php
   to its default code.
 * What I don’t know how to do is redeclare or change or recreate or whatever that
   variable once it has been created.
 * I literally copied and pasted the entire code above from the original theme to
   my child theme. That got a “cannot redeclare” error. So…is there a way to undeclare
   it and recreate it? Or just change the slug?
 *  [Travis](https://wordpress.org/support/users/tjtaylor/)
 * (@tjtaylor)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720738)
 * Hi KeithAdv,
 * Like bcworkz said, since you’re not using the CPT, I would simply remove the 
   action that is being called. If you drop this in your child themes function.php,
   it should work:
 *     ```
       remove_action('init', 'create_event');
       ```
   
 * And then any theme updates should still work, as long as the theme author doesn’t
   change the name of the function (which is highly unlikely).
 * For more info, see [http://codex.wordpress.org/Function_Reference/remove_action](http://codex.wordpress.org/Function_Reference/remove_action)
 *  Thread Starter [KeithAdv](https://wordpress.org/support/users/keithadv/)
 * (@keithadv)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720749)
 * Thank you, Travis! Unfortunately, that seems to have surprisingly little effect.
 * If I drop just that line into the child theme, restore the parent theme’s functions.
   php to the original code, and resave Permalinks, the original “collision error”
   comes back, resulting in the 404 error.
 * In order to make the site work, I still have go back to the parent’s functions.
   php and change the word “event” in this line…
 * `'rewrite' => array('slug' => __('event', 'jollytheme' )),`
 * …to something else.
 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720756)
 * You probably need to remove the action from a hook to the ‘after_setup_theme’
   action. Simply adding the remove line to functions.php probably is running before
   the action is added by the parent – reverse of what I expected.
 * You’re likely thinking “Whaaat? Add an action to remove an action?”
 * Yes, strange but true. Here’s the code, still placed in functions.php of your
   child theme:
 *     ```
       add_action('after_setup_theme', 'ka_remove_event');
       function ka_remove_event() {
          remove_action('init', 'create_event');
       }
       ```
   
 *  Thread Starter [KeithAdv](https://wordpress.org/support/users/keithadv/)
 * (@keithadv)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720758)
 * That worked. Thank you! I’ve programmed in a few different languages, including
   assembler–and I think PHP is just plain weird.
 * Do you think, to be on the safe side, I should follow your code with the original
   create_event code above (with my changed “slug” variable)?
 *  Thread Starter [KeithAdv](https://wordpress.org/support/users/keithadv/)
 * (@keithadv)
 * [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720771)
 * Hey, bcworkz–
 * I found this code snippet that unregisters the CPT altogether. In addition, it
   removes “Events” from the admin menu. My calendar plugin, (that apparently gets
   registered after all this) puts its own “Events” on the menu. I like this because
   it will keep the client from accidentally doing Event entries in the wrong place.
 * Right now, I have it directly following your code in the child theme functions.
   php and it seems to be working well. I wonder–is it doing something redundant
   to your code?
 *     ```
       function unregister_post_type( $post_type, $slug = 'Events' ){
           global $wp_post_types;
   
           if ( isset( $wp_post_types[ $post_type ] ) ) {
               unset( $wp_post_types[ $post_type ] );
   
               $slug = ( !$slug ) ? 'edit.php?post_type=' . $post_type : $slug;
               remove_menu_page( $slug );
           }
       }
       ```
   

Viewing 7 replies - 1 through 7 (of 7 total)

The topic ‘Beginner needs PHP help on arrays’ is closed to new replies.

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 7 replies
 * 3 participants
 * Last reply from: [KeithAdv](https://wordpress.org/support/users/keithadv/)
 * Last activity: [11 years, 5 months ago](https://wordpress.org/support/topic/beginner-needs-php-help-on-arrays/#post-5720771)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
