skip to Main Content

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 class="col-md-4 ">
    <div class="card border-0">
        <div class="image-parent">
        <?php echo wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ), 'full', '', [ 'class' => 'card-img-top' ] ); ?>
        <a href="#" class="cardTopLink"><?php echo $category_name; ?></a>
    </div>
        <div class="card-body">
            <!-- <h6>April 25, 2022</h6> -->
            <h5 class="card-title"><?php the_title(); ?></h5>
            <p class="card-text"><?php the_excerpt()?></p>
            <a href="<?php the_permalink(); ?>" class="card-link">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 class="container"><div class="row"><div class="col-md-12">
 <form method="post" action="options.php">
    <?php settings_fields('theme_settings'); ?>
    <?php $options = get_option('theme_settings'); ?>
     <?php if ($_REQUEST['settings-updated']) : ?>
    <div class="updated">
    <p><strong class="alret">
    <?php _e('Options saved'); ?>
    </strong></p>
    </div>
    <?php endif; ?>      

    <div class="the-container">

   <div id="social" class="container tab-pane fade active show"><br>
      <fieldset>

    <?php $social_arr = ['facebook','twitter','linkedin','youtube'];
        foreach($social_arr as $social){?>
 <div class="form-group form_builder_row facebook_container row">
 
<div class="col-md-2 form_builder_col">    
<label class="control-label <?php echo $social;?>" for="<?php echo $social;?>">
<?php echo ucfirst($social);?>:</label>
            
</div>

<div class="col-md-6 form_builder_col">
<input type="text" class=" form_builder_field form-control input-text field_<?php echo $social;?>" 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 class="mt-4">
    <input name="theme_settings[submit]" id="submit" value="Save Changes" type="submit" class="button button-primary btn-md ml-3">
    </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');
?>

2

Answers


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

    Login or Signup to reply.
  2. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search