Home > other >  White screen for wp-admin after wordpress function.php change (no log errors)
White screen for wp-admin after wordpress function.php change (no log errors)

Time:08-27

After my function.php code was modified I get a white screen when trying to go to my wordpress /wp-admin page. What could be causing the issue? Also general code improvement are welcome, as I never coded in php or wordpress before.

function.php file

<?php

function register_my_menus() {
  register_nav_menus(
    array(
      'header-menu' => __( 'Header Menu' ),
      'footer-menu1' => __( 'Footer Menu 1' ),
      'footer-menu2' => __( 'Footer Menu 2' ),
      'footer-menu3' => __( 'Footer Menu 3' ),
      'side-menu' => __( 'Side Menu' ),
     )
   );
 }
 add_action( 'init', 'register_my_menus' );

add_theme_support( 'post-thumbnails' ); 
add_theme_support( 'custom-logo' );


add_filter ( 'nav_menu_css_class', 'so_37823371_menu_item_class', 10, 4 );

function so_37823371_menu_item_class ( $classes, $item, $args, $depth ){
  $classes[] = 'nav-item';
  return $classes;
}

add_filter( 'nav_menu_link_attributes', function($atts) {
        $atts['class'] = "nav-link";
        return $atts;
}, 100, 1 );

function my_theme_assets_files() {
  wp_enqueue_script( 'custom-js', get_template_directory_uri().  '/js/custom.js' , [], '1.0.0' , true  );
  

  wp_localize_script( 'custom-js', 'jsh_ajax', [
    'ajax_url' =>  admin_url( 'admin-ajax.php' )
  ]);

}
add_action( 'wp_enqueue_scripts', 'my_theme_assets_files' );


add_action("wp_ajax_sk_ajax_posts", "sk_ajax_posts");
add_action("wp_ajax_nopriv_sk_ajax_posts", "sk_ajax_posts");

function sk_ajax_posts() {

  $cat_id = $_POST['cat_id'];
  $args = array(  
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => -1, 
    'cat'  => $cat_id ,
    // 'orderby’ => 'title', 
    // 'order’ => 'ASC', 
);

$loop = new WP_Query( $args ); 
while ( $loop->have_posts() ) : $loop->the_post(); 

        //the_post();

        $categories = get_the_category();
        $category_name = $categories[0]->name;
?>



<div >
    <div >
        <div >
        <?php echo wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ), 'full', '', [ 'class' => 'card-img-top' ] ); ?>
        <a href="#" ><?php echo $category_name; ?></a>
    </div>
        <div >
            <!-- <h6>April 25, 2022</h6> -->
            <h5 ><?php the_title(); ?></h5>
            <p ><?php the_excerpt()?></p>
            <a href="<?php the_permalink(); ?>" >Read the article</a>
        </div>
    </div>
</div>
<?php  
endwhile; 
            echo paginate_links(array(
                'total' => $loop->max_num_pages,
                'prev_text' => __('Previous'),
                'next_text' => __('Next')
            )) . "</div>";


 wp_reset_postdata(); 

  die();
}

/*
* Creating a function to create our CPT
*/
  
function fisher_custom_post_type_advisor() {
  
  // Set UI labels for Custom Post Type
      $labels = array(
          'name'                => _x( 'Advisor\'s', 'Post Type General Name', 'twentytwentyone' ),
          'singular_name'       => _x( 'advisor', 'Post Type Singular Name', 'twentytwentyone' ),
          'menu_name'           => __( 'Advisor\'s', 'twentytwentyone' ),
          'parent_item_colon'   => __( 'advisor', 'twentytwentyone' ),
          'all_items'           => __( 'All Advisor\'s', 'twentytwentyone' ),
          'view_item'           => __( 'View Advisor', 'twentytwentyone' ),
          'add_new_item'        => __( 'Add New Advisor', 'twentytwentyone' ),
          'add_new'             => __( 'Add New', 'twentytwentyone' ),
          'edit_item'           => __( 'Edit Advisor', 'twentytwentyone' ),
          'update_item'         => __( 'Update Advisor', 'twentytwentyone' ),
          'search_items'        => __( 'Search Advisor', 'twentytwentyone' ),
          'not_found'           => __( 'Not Found', 'twentytwentyone' ),
          'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwentyone' ),
      );
        
  // Set other options for Custom Post Type
        
      $args = array(
          'label'               => __( 'Advisor\'s', 'twentytwentyone' ),
          'description'         => __( 'Advisor\' news and reviews', 'twentytwentyone' ),
          'labels'              => $labels,
          // Features this CPT supports in Post Editor
          'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions' ),
          // You can associate this CPT with a taxonomy or custom taxonomy. 
          // 'taxonomies'          => array( 'genres' ),
          /* A hierarchical CPT is like Pages and can have
          * Parent and child items. A non-hierarchical CPT
          * is like Posts.
          */
          'hierarchical'        => false,
          'public'              => true,
          'show_ui'             => true,
          'show_in_menu'        => true,
          'show_in_nav_menus'   => true,
          'show_in_admin_bar'   => true,
          'menu_position'       => 5,
          'can_export'          => true,
          'has_archive'         => true,
          'rewrite'     => array( 'slug' => 'advisors' ),
          'exclude_from_search' => false,
          'publicly_queryable'  => true,
          'capability_type'     => 'post',
          'show_in_rest' => false,
    
      );
        
      // Registering your Custom Post Type
      register_post_type( 'all-advisors', $args );
    
  }
    
  /* Hook into the 'init' action so that the function
  * Containing our post type registration is not 
  * unnecessarily executed. 
  */
    
  add_action( 'init', 'fisher_custom_post_type_advisor', 0 );

function global_notice_meta_box() {

    add_meta_box(
        'advisor-first-name',
        __( 'Advisor Detail', 'sitepoint' ),
        'global_notice_meta_box_callback',
        'all-advisors'
    );
}

add_action( 'add_meta_boxes', 'global_notice_meta_box' );

function global_notice_meta_box_callback( $post ) {

  // Add a nonce field so we can check for it later.
  wp_nonce_field( 'fisher_advisor', 'fisher_advisor' );
  
  global $fields;

  $fields = [
    array (
      'key' => 'first_name',
      'label'=> __( 'Full Name'),
      'type' => 'text'
    ),
    array (
      'key' => 'role',
      'label'=> __( 'Title'),
      'type' => 'text'
    ),
    array (
      'key' => 'professional_certificate_short_form',
      'label'=> __( 'Professional Certifications (Short)'),
      'type' => 'text'
    ),
    array (
      'key' => 'professional_certificate',
      'label'=> __( 'Professional Certifications'),
      'type' => 'text'
    ),
array (
      'key' => 'adress',
      'label'=> __( 'Full Address'),
      'type' => 'text'
    ),
    array (
    'key' => 'city',
    'label' => __( 'Location'),
    'type' => 'text'
    ),
    array (
      'key' => 'phone',
      'label' => __( 'Phone' ),
      'type' => 'tel'
    ),
    array (
      'key' => 'email',
      'label' => __( 'Email' ),
      'type' => 'email'
    )
    
  ];


  foreach ( $fields as $field ) {
    $value = get_post_meta( $post->ID, '_advisor_'. $field['key'], true );
    if ( $field['key'] == 'city' ) {

      $args = [ 'post_type' => 'all-locations', 'posts_per_page' => -1 ];
      $locations = new WP_Query($args);

      if ( $locations->have_posts() ) {
        echo '<label><span>' . $field['label'] .'</span>';
        echo '<select name="advisor_' . $field['key'] . '">';

        while ( $locations->have_posts() ) {
         $locations->the_post();
          echo '<option value="' . get_the_title() .  '">' . get_the_title() . '</option>';
        }

        echo '</select></label>';
      } 

    } else {
      $value = get_post_meta( $post->ID, '_advisor_'. $field['key'], true );
      echo '<label><span>' . $field['label'] .'</span> <input type="'. $field['type'] .'"  name="advisor_' . $field['key'] . '" value="' . esc_attr( $value ) . '" /></label>';
      echo '<br>';
    }

  }

}

function save_global_notice_meta_box_data( $post_id ) {

  // Check if our nonce is set.
  if ( ! isset( $_POST['fisher_advisor'] ) ) {
      return;
  }

  // Verify that the nonce is valid.
  if ( ! wp_verify_nonce( $_POST['fisher_advisor'], 'fisher_advisor' ) ) {
      return;
  }

  // If this is an autosave, our form has not been submitted, so we don't want to do anything.
  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
      return;
  }

  // Check the user's permissions.
  if ( isset( $_POST['post_type'] ) && 'all-advisors' == $_POST['post_type'] ) {

      if ( ! current_user_can( 'edit_page', $post_id ) ) {
          return;
      }

  }
  else {

      if ( ! current_user_can( 'edit_post', $post_id ) ) {
          return;
      }
  }

  /* OK, it's safe for us to save the data now. */

  // Make sure that it is set.
  
  $fields = [
    array (
      'key' => 'first_name',
      'label'=> __( 'Full Name'),
      'type' => 'text'
    ),
    array (
      'key' => 'role',
      'label'=> __( 'Title'),
      'type' => 'text'
    ),
    array (
      'key' => 'professional_certificate_short_form',
      'label'=> __( 'Professional Certifications (Short)'),
      'type' => 'text'
    ),
    array (
      'key' => 'professional_certificate',
      'label'=> __( 'Professional Certifications'),
      'type' => 'text'
    ),

    array (
      'key' => 'adress',
      'label'=> __( 'Full Address'),
      'type' => 'text'
    ),
    array (
    'key' => 'city',
    'label' => __( 'Location'),
    'type' => 'text'
    ),
    array (
      'key' => 'phone',
      'label' => __( 'Phone' ),
      'type' => 'tel'
    ),
    array (
      'key' => 'email',
      'label' => __( 'Email' ),
      'type' => 'email'
    )
   
  ];


foreach ( $fields as $field ) {
  if ( ! isset( $_POST['advisor_' . $field['key']] ) ) return;

  $sav_field = sanitize_text_field( $_POST['advisor_' . $field['key']] );
  update_post_meta( $post_id, '_advisor_' . $field['key'], $sav_field );
}

}

add_action( 'save_post', 'save_global_notice_meta_box_data' );
/*****cpt for location ***/
/*
* Creating a function to create our CPT
*/
  
function fisher_custom_post_type_location() {
  
  // Set UI labels for Custom Post Type
      $labels = array(
          'name'                => _x( 'Location\'s', 'Post Type General Name', 'twentytwentyone' ),
          'singular_name'       => _x( 'Location', 'Post Type Singular Name', 'twentytwentyone' ),
          'menu_name'           => __( 'Location\'s', 'twentytwentyone' ),
          'parent_item_colon'   => __( 'Location', 'twentytwentyone' ),
          'all_items'           => __( 'All Location\'s', 'twentytwentyone' ),
          'view_item'           => __( 'View Location', 'twentytwentyone' ),
          'add_new_item'        => __( 'Add New Location', 'twentytwentyone' ),
          'add_new'             => __( 'Add New', 'twentytwentyone' ),
          'edit_item'           => __( 'Edit Location', 'twentytwentyone' ),
          'update_item'         => __( 'Update Location', 'twentytwentyone' ),
          'search_items'        => __( 'Search Location', 'twentytwentyone' ),
          'not_found'           => __( 'Not Found', 'twentytwentyone' ),
          'not_found_in_trash'  => __( 'Not found in Trash', 'twentytwentyone' ),
      );
        
  // Set other options for Custom Post Type
        
      $args = array(
          'label'               => __( 'Location\'s', 'twentytwentyone' ),
          'description'         => __( 'Location\' news and reviews', 'twentytwentyone' ),
          'labels'              => $labels,
          // Features this CPT supports in Post Editor
          'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions' ),
          // You can associate this CPT with a taxonomy or custom taxonomy. 
          // 'taxonomies'          => array( 'genres' ),
          /* A hierarchical CPT is like Pages and can have
          * Parent and child items. A non-hierarchical CPT
          * is like Posts.
          */
          'hierarchical'        => false,
          'public'              => true,
          'show_ui'             => true,
          'show_in_menu'        => true,
          'show_in_nav_menus'   => true,
          'show_in_admin_bar'   => true,
          'menu_position'       => 5,
          'can_export'          => true,
          'has_archive'         => true,
          'rewrite'     => array( 'slug' => 'locations' ),
          'exclude_from_search' => false,
          'publicly_queryable'  => true,
          'capability_type'     => 'post',
          'show_in_rest' => false,
    
      );
        
      // Registering your Custom Post Type
      register_post_type( 'all-locations', $args );
    
  }
    
  /* Hook into the 'init' action so that the function
  * Containing our post type registration is not 
  * unnecessarily executed. 
  */
    
  add_action( 'init', 'fisher_custom_post_type_location', 0 );
/****locatin-meta-box**** */
function global_notice_meta_box_location() {
  add_meta_box(
    'advisor-first-name',
    __( 'Location Detail', 'sitepoint' ),
    'global_notice_meta_box_location_callback',
    'all-locations'
  );

}

add_action( 'add_meta_boxes', 'global_notice_meta_box_location' );
function global_notice_meta_box_location_callback( $post ) {

  // Add a nonce field so we can check for it later.
  wp_nonce_field( 'fisher_location', 'fisher_location' );
  
  global $fields;

  $fields = [
    array (
      'key' => 'city',
      'label'=> __( 'city'),
      'type' => 'text'
    ),
    array (
      'key' => 'adress',
      'label'=> __( 'adress'),
      'type' => 'text'
    ),
    array (
      'key' => 'phone',
      'label' => __( 'Phone' ),
      'type' => 'tel'
    ),
    array (
      'key' => 'lati',
      'label' => __( 'latitutde' ),
      'type' => 'text'
    ),
    array (
      'key' => 'langi',
      'label' => __( 'langitude' ),
      'type' => 'text'
    ),
    
  ];


  foreach ( $fields as $field ) {
    $value = get_post_meta( $post->ID, '_location_'. $field['key'], true );
    echo '<label><span>' . $field['label'] .'</span> <input type="'. $field['type'] .'"  name="location_' . $field['key'] . '" value="' . esc_attr( $value ) . '" /></label>';
    echo '<br>';
  }

}
function save_global_notice_meta_box_location_data( $post_id ) {

  // Check if our nonce is set.
  if ( ! isset( $_POST['fisher_location'] ) ) {
      return;
  }

  // Verify that the nonce is valid.
  if ( ! wp_verify_nonce( $_POST['fisher_location'], 'fisher_location' ) ) {
      return;
  }

  // If this is an autosave, our form has not been submitted, so we don't want to do anything.
  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
      return;
  }

  // Check the user's permissions.
  if ( isset( $_POST['post_type'] ) && 'all-locations' == $_POST['post_type'] ) {

      if ( ! current_user_can( 'edit_page', $post_id ) ) {
          return;
      }

  }
  else {

      if ( ! current_user_can( 'edit_post', $post_id ) ) {
          return;
      }
  }

  /* OK, it's safe for us to save the data now. */

  // Make sure that it is set.
  
  $fields = [
    array (
      'key' => 'city',
      'label'=> __( 'city'),
      'type' => 'text'
    ),
    array (
      'key' => 'adress',
      'label'=> __( 'adress'),
      'type' => 'text'
    ),
    array (
      'key' => 'phone',
      'label' => __( 'Phone' ),
      'type' => 'tel'
    ),
    array (
      'key' => 'lati',
      'label' => __( 'latitutde' ),
      'type' => 'text'
    ),
    array (
      'key' => 'langi',
      'label' => __( 'langitude' ),
      'type' => 'text'
    ),

    
  ];


foreach ( $fields as $field ) {
  if ( ! isset( $_POST['location_' . $field['key']] ) ) return;

  $sav_field = sanitize_text_field( $_POST['location_' . $field['key']] );
  update_post_meta( $post_id, '_location_' . $field['key'], $sav_field );
}

}

When the below was added, I started getting a blank screen for wordpress when I go to /wp-admin

add_action( 'save_post', 'save_global_notice_meta_box_location_data' );
?>

<?php   
//SETTING UP THE PAGE

function set_page() {  
    add_menu_page('Social Media Links', 'Social Media Links', 'manage_options', 'theme_settings', 'the_page', 'dashicons-share', 40);
}
//CALLING THE FUNCTION
add_action('admin_menu', 'set_page');?>
<?php //THE PAGE
function the_page() {?>
<link rel="stylesheet" href="<?php echo get_template_directory_uri()?>/css/bootstrap.min.css">
<legend style="background: #2271b1;color: #fff;padding: 15px 30px;margin-bottom: 60px;margin-top: 10px;padding-right: 85px;max-width: 99%;">Social media linked accounts</legend>
<div ><div ><div >
 <form method="post" action="options.php">
    <?php settings_fields('theme_settings'); ?>
    <?php $options = get_option('theme_settings'); ?>
     <?php if ($_REQUEST['settings-updated']) : ?>
    <div >
    <p><strong >
    <?php _e('Options saved'); ?>
    </strong></p>
    </div>
    <?php endif; ?>      

    <div >

   <div id="social" ><br>
      <fieldset>

    <?php $social_arr = ['facebook','twitter','linkedin','youtube'];
        foreach($social_arr as $social){?>
 <div >
 
<div >    
<label  for="<?php echo $social;?>">
<?php echo ucfirst($social);?>:</label>
            
</div>

<div >
<input type="text"  id="<?php echo $social;?>" name="theme_settings[<?php echo $social;?>]" value="<?php echo $options[$social];?>" placeholder="<?php echo ucfirst($social);?>">
 
    </div></div>
<?php }?>  
</fieldset>    
</div>
</div>

      <p >
    <input name="theme_settings[submit]" id="submit" value="Save Changes" type="submit" >
    </p>      
    </form>
</div></div></div>
<?php } ?>
<?php
//REGISTERING SETTINGS AND FIELDS
function register_settings_and_fields() {
    register_setting('theme_settings','theme_settings');
}

add_action('admin_init', 'register_settings_and_fields');
?>

CodePudding user response:

Have you opened wp-config.php? and set WP_DEBUG to true; this can show some errors more intuitively

CodePudding user response:

Don't use function names like this the_page set_page use a prefix before function name e.g.: lefty_wp_set_page , lefty_wp_the_page or give a function a meaningful name, don't just copy paste things from internet, do some modifications in it to avoid conflicts.

  • Related