/** * Uloží fieldset * VOLÁ SE V HOOCE * * @author Jan Pokorný */ public function saveFieldset($termId) { $fieldset = $this->getFieldset(); if (isset($_POST[$fieldset->getPostPrefix()])) { $fieldset = $this->getFieldset(); $form = new KT_form(); $form->addFieldSetByObject($fieldset); $form->validate(); if (!$form->hasError()) { $form->saveFieldsetToTermMetaTable($termId); } elseif (KT::isWpAjax()) { $taxonomy = filter_input(INPUT_POST, "taxonomy", FILTER_SANITIZE_STRING); wp_delete_term($termId, $taxonomy); $errorMessage = ""; foreach ($fieldset->getFields() as $field) { if ($field->hasErrorMsg()) { $errorMessage .= sprintf("%s - %s <br>", $field->getLabel(), $field->getError()); } } $ajaxResponse = new WP_Ajax_Response(); $ajaxResponse->add(array("what" => "taxonomy", "data" => new WP_Error("error", $errorMessage))); $ajaxResponse->send(); } } }
/** * Interní kontrola zda je možné zpracovat post, resp. požadevek pro přidání, či uložení MetaBoxu * * @author Martin Hlaváč * @link http://www.ktstudio.cz * * @param WP_Post $post * @return boolean */ private function CheckCanHandlePostRequest($post) { if (KT::isWpAjax() && !$this->getIsDefaultAutoSave()) { return false; // v případě ajaxu (zatím) nechceme přidávat ani zpracovávat naše Metaboxy } if (!$post instanceof WP_Post) { return true; } $postId = $post->ID; $isPage = $post->post_type == KT_WP_PAGE_KEY; $isOnlyForFrontPage = $this->getIsOnlyForFrontPage(); if (isset($isOnlyForFrontPage)) { if ($isPage) { $frontPageId = get_option(KT_WP_OPTION_KEY_FRONT_PAGE); if ($isOnlyForFrontPage && $postId != $frontPageId || !$isOnlyForFrontPage && $postId == $frontPageId) { return false; } } else { return false; } } $pageTemplates = $this->getPageTemplates(); if (KT::arrayIssetAndNotEmpty($pageTemplates)) { // chceme kontrolovat (aktuální) page template(y) if ($isPage) { $currentPageTemplate = get_post_meta($postId, KT_WP_META_KEY_PAGE_TEMPLATE, true) ?: self::DEFAULT_PAGE_TEMPLATE_KEY; if (!in_array($currentPageTemplate, $pageTemplates)) { // (aktuální) page template nesedí => rušíme přidání metaboxu return false; } } else { return false; } } $postFormat = $this->getPostFormat(); if (KT::issetAndNotEmpty($postFormat)) { // chceme kontrolovat (aktuální) post formát $currentPostFormat = get_the_terms($postId, "post_format"); if (KT::arrayIssetAndNotEmpty($currentPostFormat)) { if (reset($currentPostFormat)->slug !== "post-format-{$postFormat}") { // (aktuální) post formát nesedí => rušíme přidání metaboxu return false; } } else { return false; } } return true; }