WordPress перенаправляет меня на всю страницу сообщений в админке вместо страницы с настраиваемым типом сообщений, когда я нажимаю кнопку publi sh - PullRequest
1 голос
/ 17 июня 2020

Я создаю плагин, в котором я зарегистрировал настраиваемый пост, и когда я нажимаю кнопку publi sh на этой странице настраиваемого типа сообщения из панели администратора, он перенаправляет меня на страницу все сообщения вместо этого страница сообщения произвольного типа.

Что ж, то, что я сделал, ниже:

add_action( 'init', [ $this, 'register_listing_post_type' ] );
add_action( 'init', [ $this, 'register_listing_taxonomy' ] );
add_action( 'add_meta_boxes', [ $this, 'listing_meta_boxes' ] );  
add_action( 'save_post', [ $this, 'save_listing_meta_data' ] );  

и все функции обратного вызова ниже:

/**
* Register listing custom post type
*
* @return string
*/
public function register_listing_post_type() { 

     $labels = array(
          'name'                  => _x( 'Listings', 'Post type general name', 'shibbir-directory-listing' ),
          'singular_name'         => _x( 'Listing', 'Post type singular name', 'shibbir-directory-listing' ),
          'menu_name'             => _x( 'Listings', 'Admin Menu text', 'shibbir-directory-listing' ),
          'name_admin_bar'        => _x( 'Listing', 'Add New on Toolbar', 'shibbir-directory-listing' ),
          'add_new'               => __( 'Add New listing', 'shibbir-directory-listing' ),
          'add_new_item'          => __( 'Add New listing', 'shibbir-directory-listing' ),
          'new_item'              => __( 'New Listing', 'shibbir-directory-listing' ),
          'edit_item'             => __( 'Edit Listing', 'shibbir-directory-listing' ),
          'view_item'             => __( 'View Listing', 'shibbir-directory-listing' ),
          'all_items'             => __( 'All Listings', 'shibbir-directory-listing' ),
          'search_items'          => __( 'Search Listings', 'shibbir-directory-listing' ),
          'parent_item_colon'     => __( 'Parent Listings:', 'shibbir-directory-listing' ),
          'not_found'             => __( 'No listings found.', 'shibbir-directory-listing' ),
          'not_found_in_trash'    => __( 'No listings found in Trash.', 'textdomain' ),
          'featured_image'        => _x( 'Listing Cover Image', 'Overrides the “Featured Image” phrase for this post type. Added in 4.3', 'shibbir-directory-listing' ),
          'set_featured_image'    => _x( 'Set cover image', 'Overrides the “Set featured image” phrase for this post type. Added in 4.3', 'shibbir-directory-listing' ),
          'remove_featured_image' => _x( 'Remove cover image', 'Overrides the “Remove featured image” phrase for this post type. Added in 4.3', 'shibbir-directory-listing' ),
          'use_featured_image'    => _x( 'Use as cover image', 'Overrides the “Use as featured image” phrase for this post type. Added in 4.3', 'shibbir-directory-listing' ),
          'archives'              => _x( 'Book archives', 'The post type archive label used in nav menus. Default “Post Archives”. Added in 4.4', 'shibbir-directory-listing' ),            
     );

     $args = array(
          'labels'             => $labels,
          'public'             => true,
          'publicly_queryable' => true,
          'show_ui'            => true,
          'show_in_menu'       => true,
          'query_var'          => true,
          'rewrite'            => array( 'slug' => 'listing' ),
          'capability_type'    => 'post',
          'has_archive'        => true,
          'hierarchical'       => false,
          'menu_position'      => null,
          'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
     );

     register_post_type( $this->listing_type, $args );

}

/**
* Register listing custom post type taxonomy
*
* @return string
*/

public function register_listing_taxonomy() {

     $listing_category_args = array(
          'hierarchical'  =>  false,
          'query_var'     =>  'listing_category',
          'show_tagcloud' =>  true,
          'rewrite'       =>  array(
               'slug'          =>  'listing-category',
               'with_front'    =>  true,
          ),
          'labels'        =>  array(
               'name'          =>  'Listing Category',
               'singular_name' =>  'Listing Category',
               'edit_item'     =>  'Edit listing category',
               'update_item'   =>  'Update listing category',
               'add_new_item'  =>  'Add new listing category',
               'new_item_name' =>  'New listing Category',
               'all_items'     =>  'All listing category',
               'search_items'  =>  'Search listing category',
               'popular_items' =>  'Popular listing category',
               'separate_items_with_commas'    =>  'Separate listing category with commas',
               'add_or_remove_items'   =>  'Add or remove listing category',
               'choose_from_most_used' =>  'Choose from the most popular listing category'
          )
          );

          $amenities_args = array(
          'hierarchical'  =>  false,
          'query_var'     =>  'amenities',
          'show_tagcloud' =>  true,
          'rewrite'       =>  array(
               'slug'          =>  'amenities',
               'with_front'    =>  true,
          ),
          'labels'        =>  array(
               'name'          =>  'Amenities',
               'singular_name' =>  'Amenities',
               'edit_item'     =>  'Edit amenities',
               'update_item'   =>  'Update amenities',
               'add_new_item'  =>  'Add new amenities',
               'new_item_name' =>  'New listing amenities',
               'all_items'     =>  'All listing amenities',
               'search_items'  =>  'Search listing amenities',
               'popular_items' =>  'Popular listing amenities',
               'separate_items_with_commas'    =>  'Separate amenities with commas',
               'add_or_remove_items'   =>  'Add or remove amenities',
               'choose_from_most_used' =>  'Choose from the most popular amenities'
          )
          );

          register_taxonomy( 'listing-category', array( $this->listing_type ), $listing_category_args );
          register_taxonomy( 'amenities', array( $this->listing_type ), $amenities_args );
}

/**
* Metaboxes for the new lsting
*
* @return void
*/
public function listing_meta_boxes() {        
     add_meta_box( 'slmetaboxesid', __( 'Listing Details', 'shibbir-listing' ), [ $this, 'sl_metabox_callback' ]  );        
}

/**
* Metaboxes callback funciton
*
* @return string
*/
public function sl_metabox_callback() {
     include __DIR__ . '/views/listing-metaboxes.php';
}

/**
* Save listing meta boxes data
*
* @return void
*/
public function save_listing_meta_data() {        

     // Get metaboxes value and sanitize it
     $sl_keywords    =   isset( $_POST['sl_keywords'] ) ? sanitize_text_field( $_POST[ 'sl_keywords'] ) : '';
     $sl_website     =   isset( $_POST['sl_website'] ) ? sanitize_text_field( $_POST[ 'sl_website'] ) : '';
     $sl_price       =   isset( $_POST['sl_price'] ) ? sanitize_text_field( $_POST[ 'sl_price'] ) : '';
     $sl_phone       =   isset( $_POST['sl_phone'] ) ? sanitize_text_field( $_POST[ 'sl_phone'] ) : '';
     $sl_email       =   isset( $_POST['sl_email'] ) ? sanitize_text_field( $_POST[ 'sl_email'] ) : '';
     $sl_address     =   isset( $_POST['sl_address'] ) ? sanitize_text_field( $_POST[ 'sl_address'] ) : '';
     $sl_state       =   isset( $_POST['sl_state'] ) ? sanitize_text_field( $_POST[ 'sl_state'] ) : '';
     $sl_country     =   isset( $_POST['sl_country'] ) ? sanitize_text_field( $_POST[ 'sl_country'] ) : '';
     $sl_postal      =   isset( $_POST['sl_postal'] ) ? sanitize_text_field( $_POST[ 'sl_postal'] ) : '';
     $sl_glat        =   isset( $_POST['sl_glat'] ) ? sanitize_text_field( $_POST[ 'sl_glat'] ) : '';
     $sl_glong       =   isset( $_POST['sl_glong'] ) ? sanitize_text_field( $_POST[ 'sl_glong'] ) : '';

     $sl_details     =   [
          'sl_keywords'   =>  $sl_keywords,
          'sl_website'    =>  $sl_website,
          'sl_price'      =>  $sl_price, 
          'sl_phone'      =>  $sl_phone, 
          'sl_email'      =>  $sl_email,
          'sl_address'    =>  $sl_address,
          'sl_state'      =>  $sl_state,
          'sl_country'    =>  $sl_country, 
          'sl_postal'     =>  $sl_postal,
          'sl_glat'       =>  $sl_glat,
          'sl_glong'      =>  $sl_glong
     ];

     update_option( 'sl_details', $sl_details );
}

Теперь у меня есть заметил одну строку:

add_action( 'add_meta_boxes', [ $this, 'listing_meta_boxes' ] );  

Когда я удаляю этот add_meta_boxes хук, он работает нормально. Я имею в виду, что когда я нажимаю кнопку publi sh на странице настраиваемого типа сообщения от администратора, он остается на этой странице.

Я что-то делаю не так?

У меня есть полное git репо, если вам нужен полный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...