WordPress

php – Jak korzystać z funkcji $_GET zaplecza WordPressa

  • 18 marca, 2019
  • 4 min read
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_tablepojawi 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?

Warto przeczytać!  tworzenie wtyczek - Czy możemy pisać niestandardowe manipulacje DOM w pliku edit.js podczas tworzenia niestandardowego bloku Gutenberga?

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ę

Warto przeczytać!  wtyczki - wordpress admin-ajax złe żądanie 400


Źródło