javascript — Używanie formularza do przekazywania parametrów GET i odpowiedniego tworzenia tablicy postów
![javascript — Używanie formularza do przekazywania parametrów GET i odpowiedniego tworzenia tablicy postów](https://oen.pl/wp-content/uploads/2023/01/apple-touch-icon@2.png)
Próbuję utworzyć tablicę postów na podstawie formularza na stronie administratora wydarzeń + dwie tablice. Kod działa dobrze, ale z jakiegoś powodu powoduje jakiś problem z zasobami, którego nie mogę rozgryźć:
<?php
// Render the custom meta box content
function render_events_custom_meta_box() {
global $post_type;
if ('event' == $post_type) {
echo "<div class="updated">";
echo '<p>';
echo 'Vizsga időpontok létrehozása:';
// Retrieve selected options
$selected_language = isset($_POST['selected_language']) ? sanitize_text_field($_POST['selected_language']) : '';
$selected_option = isset($_POST['selected_option']) ? sanitize_text_field($_POST['selected_option']) : '';
$selected_date = isset($_POST['selected_date']) ? sanitize_text_field($_POST['selected_date']) : '';
$insert_url = add_query_arg(
array(
'action' => 'insert_event_posts',
'selected_language' => $selected_language,
'selected_option' => $selected_option,
'selected_date' => $selected_date,
),
admin_url('admin-post.php')
);
echo "<form method='post' id='event-form' action='" . esc_url($insert_url) . "'>";
echo "<button type="submit" class="button button-primary" id='submit-button' style="margin:0.25em 1em">Nyomj meg</button>";
echo '</form>';
// Retrieve selected options (removed from here)
// Define arrays
$languages = array('Magyar', 'Német', 'Olasz');
$options = array('egynyelvű', 'kétnyelvű', 'Rendészeti egynyelvű');
$levels = array('B1', 'B2', 'C1');
$types = array('Papir', 'Számítógépes vizsgatermi', 'Sajátgépes vizsgatermi', 'Számítógépes Online');
// Language dropdown
echo '<label for="selected_language">Language:</label>';
echo '<select id="selected-language" name="selected_language">';
foreach ($languages as $language) {
echo '<option value="' . $language . '"' . ($selected_language == $language ? 'selected="selected"' : '') . '>' . $language . '</option>';
}
echo '</select>';
echo '<br>';
// Option dropdown
echo '<label for="selected_option">Option:</label>';
echo '<select name="selected_option" id="selected-option">';
foreach ($options as $option) {
echo '<option value="' . $option . '"' . selected($selected_option, $option, false) . '>' . $option . '</option>';
}
echo '</select>';
echo '<br>';
// Date picker
echo '<label for="selected_date">Date:</label>';
echo '<input type="date" name="selected_date" id="selected-date" value="' . $selected_date . '">';
echo '<br>';
echo '</div>';
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
var dropdowns = ['selected-language', 'selected-option', 'selected-date'];
dropdowns.forEach(function(dropdownId) {
var dropdown = document.getElementById(dropdownId);
dropdown.addEventListener('change', function() {
var selectedLanguage = document.getElementById('selected-language').value;
var selectedOption = document.getElementById('selected-option').value;
var selectedDate = document.getElementById('selected-date').value;
console.log(selectedLanguage);
var insertUrl="/wp-admin/edit.php?post_type=event&action=insert_event_posts" +
'&selected_language=" + selectedLanguage +
"&selected_option=' + selectedOption +
'&selected_date=" + selectedDate;
console.log(insertUrl);
document.getElementById("event-form').action = insertUrl;
});
});
});
</script>
<?php
}
}
add_action('admin_notices', 'render_events_custom_meta_box');
// Handle form submission and create new posts
function insert_event_posts() {
// Retrieve selected options
$selected_language = isset($_POST['selected_language']) ? sanitize_text_field($_POST['selected_language']) : '';
$selected_option = isset($_POST['selected_option']) ? sanitize_text_field($_POST['selected_option']) : '';
$selected_date = isset($_POST['selected_date']) ? sanitize_text_field($_POST['selected_date']) : '';
// Define arrays
$levels = array('B1', 'B2', 'C1');
$types = array('Papir', 'Számítógépes vizsgatermi', 'Sajátgépes vizsgatermi', 'Számítógépes Online');
// Create new posts for all variations
foreach ($levels as $level) {
foreach ($types as $type) {
$post_title = $selected_language . ' ' . $selected_option . ' ' . $level . ' ' . $type;
$post_data = array(
'post_title' => $post_title,
'post_type' => 'event',
'post_status' => 'publish',
);
// Insert new post
wp_insert_post($post_data);
}
}
// Redirect to the page URL where the function was executed
wp_safe_redirect(wp_get_referer());
exit;
}
add_action('admin_post_insert_event_posts', 'insert_event_posts');
?>
Jeśli skomentuję skrypt, funkcje zostaną uruchomione, a posty zostaną utworzone, ale parametry języka i opcji zostaną pominięte w tytułach.
Jeśli zostawię skrypt, pojawia się błąd:
Link, który kliknąłeś, wygasł. Proszę spróbuj ponownie.
Oto przykład końcowego adresu URL: /wp-admin/edit.php?post_type=event&action=insert_event_posts&selected_language=Német&selected_option=kétnyelvű&selected_date=2023-05-28
Może ktoś ma jakiś pomysł co może być przyczyną przeciążenia?
Dzięki!