php – Jak korzystać z funkcji $_GET zaplecza WordPressa
Do mojego projektu używam Plugin Boilerplate. Przeszukałem internet i przeczytałem wszystkie pytania, ale nie mogłem znaleźć tego, czego potrzebuję. Czytam też Kodeks WordPressa. Myślę, że nie mogłem pojąć tego pomysłu.
Mam dwie kolumny na mojej stronie. Kol1 i Kol2
Inside col1: wp_list_table
Inside col2: empty
Adres strony: admin.php?page=company#home
Kiedy kliknąłem przycisk Dodaj nowy wp_list_table
pojawi się pasek adresu admin.php?page=company#home&action=new
Chcę uzyskać wartość akcji z adresu URL. Wypróbowałem poniższy kod:
function addnew_query_vars($vars) {
$vars[] = 'action';
return $vars;
}
add_filter('query_vars', 'add_query_vars_filter');
echo $value = get_query_var('action'); // Nothing happens
Jak mogę uzyskać wartość akcji? Jeśli uda mi się uzyskać wartość, pokażę formularz wewnątrz col2 lub użyję instrukcji switch w innych sytuacjach.
AKTUALIZACJA 1.1.0
Używając get_current_screen
require_once(ABSPATH . 'wp-admin/includes/screen.php');
$screen = get_current_screen();
echo $screen->action; // Null
Używam wtyczki monitora zapytań. Sprawdziłem status ekranu administratora akcja get_current_screen() jest pusta. Więc muszę wrócić.
W moim kodzie nagłówka WP_List_Table my Dodaj nowe kod przycisku jest taki:
<a href=" echo admin_url("admin.php?page=company#home&action=new' );?>">
php _e( 'Add New', 'ironhead' )
</a>
Myślę, że ten blok kodu nie publikuje akcji. Istnieje polecenie set_current_screen(). Ale nie rozwiązuję problemu, jak ustawić atrybut akcji na ekranie administratora. JEŚLI mogę go użyć, mogę użyć get_current_screen(). Czy ktoś mi pomoże?
CAŁY KOD
PANEL ZAKŁADEK
<ul class="nav nav-tabs nav-pills tab-pane" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Company</a>
</li>
<li class="nav-item">
<a class="nav-link" id="facility-tab" data-toggle="tab" href="#facility" role="tab" aria-controls="facility" aria-selected="false">Facility</a>
</li>
...
</ul>
ZAWARTOŚĆ ZAKŁADKI
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<div class="row">
<div class="col">
<?php
function wp_get_all_company( $args = array() ) {
global $wpdb;
$defaults = array(
'number' => 20,
'offset' => 0,
'orderby' => 'ID',
'order' => 'ASC',
);
$args = wp_parse_args( $args, $defaults );
$cache_key = 'company-all';
$items = wp_cache_get( $cache_key, 'ironhead' );
if ( false === $items ) {
$items = $wpdb->get_results( 'SELECT * FROM ' . $wpdb->prefix . 'ih_company ORDER BY ' . $args['orderby'] .' ' . $args['order'] .' LIMIT ' . $args['offset'] . ', ' . $args['number'] );
wp_cache_set( $cache_key, $items, 'ironhead' );
}
return $items;
}
function wp_get_company_count() {
global $wpdb;
return (int) $wpdb->get_var( 'SELECT COUNT(*) FROM ' . $wpdb->prefix . 'ih_company' );
}
function wp_get_firma( $id = 0 ) {
global $wpdb;
return $wpdb->get_row( $wpdb->prepare( 'SELECT * FROM ' . $wpdb->prefix . 'ih_company WHERE ID = %d', $id ) );
} ?>
<h4><?php _e( 'Company List', 'ironhead' ); ?> <a href=" echo admin_url("admin.php?page=company#home&action=new' ); ?>" class="add-new-h2"><?php _e( 'Add New', 'ironhead' ); ?></a></h4>
<form method="post">
<input type="hidden" name="page" value="ttest_list_table">
<?php
$list_table = new Company_List_Table();
$list_table->prepare_items();
$list_table->search_box( 'search', 'search_id' );
$list_table->display();
?>
</form>
</div>
<div class="col">
// action=new (or action=something) if or switch statement will be here.
</div>
</div>
Z góry dziękuję