wtyczki – Dodaj niestandardowe przyciski z niestandardowymi akcjami na ekranie Edytuj post w WordPress?
Tworzę coś dla klienta i mam Klasa którą stworzyłem z Niestandardowy typ postu o nazwie „Kanały Push” a kiedy użytkownik doda nowy post i opublikuje go, może kliknąć jeden z nich dwa przyciski że mam w Niestandardowe pole meta.
Jeden przycisk jest dla ’Subskrybuj’ a drugi za „Anuluj subskrypcję”. korzystam z hak akcji save_post i testowanie, czy $_POST globalny to ma „subskrypcja pushfeed” Lub „pushfeed-anuluj subskrypcję” a potem zrobić to, co muszę zrobić. Jednak z jakiegoś powodu odkryłem, że po kliknięciu subskrypcji na moim komputerze lokalnym skrypt zatrzymuje się, ponieważ mówi, że wykonał 100 kolejnych połączeń itp., A kończy się to mnóstwem zduplikowanych postów bez tytułu.
Jaki byłby najlepszy sposób, aby tego uniknąć i czy istnieje lepszy hak, którego mogę użyć do tych specjalnych akcji niestandardowych, które chcę aktywować, subskrybując kanał (który przechodzi do innej klasy i wykonuje metodę subskrypcji)?
To jest znacznik, który mam dla tych dwóch przycisków, o których wspomniałem, znajduje się w Metaboksie
<input type="submit" class="button-secondary" name="pushfeed-subscribe" id="pushfeed-subscribe" value="Subscribe">
<input type="submit" class="button-secondary" name="pushfeed-unsubscribe" id="pushfeed-unsubscribe" value="Unsubscribe">
Następnie mam to dla haka akcji:
add_action( 'save_post', array( $this, 'pushfeed_save_post_meta' ) );
Prawdziwy hak jest taki:
public function pushfeed_save_post_meta( $post_id ) {
// Bail if we're doing an auto save
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
// if our nonce isn't there, or we can't verify it, bail
if( !isset( $_POST['pushfeed-nonce-field'] ) || !wp_verify_nonce( $_POST['pushfeed-nonce-field'], basename( __FILE__ ) ) ) return;
// If Subsctiption ID is empty, generate a random long number and save it
if ( empty( $_POST['pushfeed-subscription-id'] ) ) {
$random_number = substr(number_format(time() * mt_rand(),0,'',''),0,10);
$pushfeed_subscription_id = $random_number . $post_id;
update_post_meta( $post_id, 'pushfeed-subscription-id', $pushfeed_subscription_id );
}
...
if ( isset( $_POST['pushfeed-subscribe'] ) || isset( $_POST['pushfeed-unsubscribe'] ) ) {
$subscription_domain = get_post_meta($post_id, 'pushfeed-domain', true);
$subscription_id = get_post_meta($post_id, 'pushfeed-subscription-id', true);
$subscription_feed_url = get_post_meta($post_id, 'pushfeed-feed-url', true);
$subscription_callback_url = $subscription_domain . '/pushfeed/' . $subscription_id;
$sub = PuSHSubscriber::instance($subscription_domain, $subscription_id, 'PuSHSubscription', new PuSHEnvironment());
if ( isset( $_POST['pushfeed-subscribe'] ) ) {
$sub->subscribe($subscription_feed_url, $subscription_callback_url);
} elseif ( isset( $_POST['pushfeed-unsubscribe'] ) ) {
$sub->unsubscribe($subscription_feed_url, $subscription_callback_url);
}
}
}
Próbuję dowiedzieć się, dlaczego post zapisuje wiele duplikatów bez tytułu.
Ale przede wszystkim chciałbym wiedzieć, czy istnieje lepszy hak akcji, który mogę wywołać dla tych dwóch niestandardowych akcji.
Aktualizacja :
Cześć wszystkim. Skończyło się na użyciu żądania Ajax przy użyciu wordpress admin-ajax.php po kliknięciu przycisku, a następnie uruchomieniu metody subskrypcji. Gdy to nastąpi, metoda subskrypcji wykona żądanie get, a jeśli zwróci kod 200, metoda zwróci wartość true dla Ajax.