title: Czy jest jakiś sposób na dziedziczenie metod zarówno z mojej klasy wtyczki, jak i WP_List_Class?

text: Tak więc WP 3.1 wprowadza fantazyjną WP_List_Class(), która powoduje, że przepisuję wszystkie moje niestandardowe tabele administracyjne. Słusznie. Ale... w dobrych czasach mogłem wywoływać moje metody wtyczek za pomocą `$this->method()`, ponieważ włączałem plik strony do metody, która została podpięta poprzez `add_submenu_page()`. To było miłe i nieco eleganckie - a przynajmniej ładne - pomyślałem. Teraz jednak mój kod musi żyć w metodach My_WP_List_Class, która dziedziczy po WP_List_Class. Ponieważ nie mogę wykonać wielokrotnego dziedziczenia, wydaje mi się, że muszę odwoływać się do mojej globalnej instancji wtyczki lub przywracać ją w mojej klasie, co mnie trochę denerwuje. Układanie klas również nie wydaje się być opcją, ponieważ oczywiście nie mogę sprawić, by WP_List_Class dziedziczyła z mojej klasy wtyczki, ani nie chcę, aby moja klasa wtyczki dziedziczyła z WP_List_Class. Czy coś przeoczam, czy po prostu muszę z tym żyć? Edycja: więcej kontekstu: może myślę zbyt skomplikowanie, ale mój scenariusz jest taki: mam klasę wtyczek „meta”, która jest inicjowana przez inne wtyczki (kilka razy). Więc nawet nie wiem, co to jest instancja i szczerze, nie chcę wiedzieć. ;-) Każda z tych instancji łączy się z menu administratora i tworzy własną stronę menu. Każda z tych instancji również otrzymuje pewne parametry przekazane (na przykład id-like), które przechowuje wewnętrznie po wystąpieniu. Jeśli wywołam metodę, metoda zależy od tych wewnętrznie przechowywanych wartości. Do tej pory każda z tych instancji mogła żyć samodzielnie, nie musiałem rejestrować ich w żadnej tablicy ani nic takiego, można nawet anonimowo je wywołać, jeśli chciałeś. Teraz muszę dodać metody do mojej klasy dziedziczącej WP_List_Class, które będą również zależeć od tych wartości. Więc jedyne, co mogę sobie wyobrazić, to zrobić coś takiego: function table_me_some() { $table = new My_WP_List_Class(&$this); ... } a następnie wewnątrz `My_WP_List_Class` zrób coś takiego: function __construct($mama) { $this->_mama = $mama; } function cokolwiek() { $this->_mama->my_plugin_class_instance_method(); } Następnie `my_plugin_class_instance_method()` żyje w mojej instancjonowanej klasie wtyczki i odwołuje się do własnego wewnętrznego magazynu zmiennych. Jednak dopiero teraz wymyśliłem to, ale nadal nie uważam tego za zbyt schludny.


title: WordPress v3.1 ma problem z kodowaniem znaków w tytule/permalinku?

text: Byłem na najnowszej serii v3.0.x i nie miałem żadnych problemów. Po aktualizacji do WP v3.1 mam dziwny problem z kodowaniem znaków w permalinkach. Jeśli mój tytuł brzmiałby „Mam dzisiaj 50 $” w WP 3.0.x, permalink miesiąca/daty byłby następujący: example.com/2010/05/i-mam-50-dzisiaj/ Jednak oto, co dzieje się w przykładzie WP 3.1. com/2010/05/i-have-%e2%80%93-50-today/ Próbowałem zreplikować problem na czystej instalacji WordPressa i udało mi się odtworzyć ten sam problem. Czy ktoś może potwierdzić, czy jest to błąd, czy oczekiwany?


title: Przekierowanie Wordpress przy logowaniu

text: Moja witryna została pobrana do środowiska produkcyjnego. Skonfigurowałem zarówno witrynę działającą, jak i witrynę produkcyjną do korzystania z tej samej bazy danych. Kiedy loguję się do panelu administracyjnego, przekierowuję mnie na stronę na żywo. Wiem, że wordpress przechowuje adresy URL w bazie danych, więc chcę zmodyfikować (twardy kod) moją witrynę produkcyjną, aby nie przekierowywać nigdzie. Gdzie i jak? Edycja: Znalazłem rozwiązanie tego konkretnego problemu tutaj http://www.davidpaulellenwood.com/expression/267/ Ale kiedy jeden problem został rozwiązany, pojawiły się dwa nowe i jak omówiono poniżej, nie warto.


title: Sortowanie postów według wartości pola niestandardowego

text: Mam serię postów (przy użyciu motywu wp-zoom). Chciałbym utworzyć niestandardowe pole o nazwie „zamówienie” i sortować według tego pola. Oto część kodu mojej strony domowej: <?php $z = count($wpzoom_exclude_cats_home); jeśli ($z > 0) { $x = 0; $que = ""; while ($x < $z) { $que .= "-".$wpzoom_exclude_cats_home[$x]; $x++; if ($x < $z) { $que .= ","; } } } query_posts( $query_string . "&cat=$que" ); if (have_posts()) : ?>


title: Korzystanie ze schematów kolorów z próbnikiem kolorów

text: # Co robię Interfejs użytkownika do zmiany kolorów strony - Użytkownik może indywidualnie zmieniać kolory (np. kolor menu, kolor stopki, kolor treści) lub użyć schematu kolorów, który zmieni wszystkie kolory (wartości predefiniowane przeze mnie) # Problem $color_menu, $color_footer i $color_content już działają indywidualnie Muszę teraz ustawić schemat kolorów, próbowałem tego, ale nie działało: <?php $color_menu = get_option('color_menu'); ?> <?php $kolor_stopki = get_option('kolor_stopki'); ?> <?php $color_content = get_option('color_content '); ?> <?php if ( get_option( $schemat_koloru ) == 'niebieski' ) { update_option( $kolor_menu, '#0D5E84' ); update_option( $color_footer, '#1461A2' ); update_option( $kolor_treści, '#132C3F' ); } elseif ( get_option( $color_scheme ) == 'żółty' ) { update_option( $color_menu, '#CCCC00' ); opcja_aktualizacji( $kolor_stopki, '#FFFF33' ); update_option( $kolor_treści, '#FFFFCC' ); } elseif ( get_option( $color_scheme ) == 'czerwony' ) { update_option( $color_menu, '#CC0000' ); opcja_aktualizacji( $kolor_stopki, '#FF0000' ); update_option( $kolor_treści, '#CC0033' ); } else { opcja_aktualizacji( $menu_kolorów, '#252525' ); update_option( $color_footer, '#252525' ); aktualizacja_opcja( $kolor_treści, '#FFFFFF' ); } ?> Obrazek: http://i.stack.imgur.com/Ktm7h.png ## Dodatkowy problem Możliwość zmiany poszczególnych kolorów podczas korzystania ze schematu kolorów. Załóżmy, że wybrałem żółty schemat kolorów, ale chciałbym ustawić ciemniejszy kolor menu, powinienem móc go zmienić przy użyciu żółtego schematu kolorów, jeśli to możliwe ### Inny punkt widzenia Znajomy, który ze mną pracuje, pomyślał o inne rozwiązanie tego samego problemu, a on opublikował je na Stack Overflow, może chciałbyś zobaczyć jego pytanie. Łatwiej zrobić? Lepszy? Gorzej? Jaką ścieżką powinniśmy iść?


title: Aktualizacja wtyczki listy kategorii postów kończy się niepowodzeniem z błędem krytycznym

text: Właśnie wypróbowałem automatyczną aktualizację wtyczki List Category Posts do wersji 0.17.2 na WordPress 3.0.5. Myślę, że miałem wcześniej 0.17.1. Zainstalowano, ale nie udało się aktywować: Wtyczka nie mogła zostać aktywowana, ponieważ wywołała błąd krytyczny. Błąd analizy: błąd składni, nieoczekiwany T_STRING, oczekiwany T_OLD_FUNCTION lub T_FUNCTION lub T_VAR lub '}' w /hsphere/local/home/carrollp/clanecommunity.ie/wp-content/plugins/list-category-posts/include/CatListDisplayer.php on line 10 Jeśli dobrze rozumiem, autor poprosił o publikację tutaj. Nigdy wcześniej nie debugowałem WordPressa. Doceń każdą pomoc. Strona główna mojej witryny opiera się na tej wtyczce. Dziękuję!


title: Wyświetl jeden wynik dla kategorii typu postu

text: Używam kategorii taksonomii, aby pokazać mój niestandardowy typ posta, ale kiedy go kliknę, żadna strona nie jest połączona. Jak stworzyć stronę do wyświetlania wyników z kategorii? Próbowałem niestandardowego typu posta: category-portfolio.php, ale nie działało.


title: Pętla niestandardowych typów postów na szablonie strony

text: Cześć Próbuję stworzyć szablon strony, który pokazuje listę niestandardowego typu postu uporządkowanego według klucza meta, łatwo zrobiłem to za pomocą `query_posts`, ale próbuję to zrobić za pomocą `pre_get_posts`, więc stworzyłem funkcję taką jak to: add_action('pre_get_posts', 'wydarzenia'); function events($query) { if ( is_page_template('page-myevents.php') ){ $query->set('post_type', 'events'); $query->set( 'meta_key', 'start' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'zamówienie', 'DESC' ); $query->set('numberposts', 5); } } Ale to nie działa, kiedy wchodzę na stronę, która wysyła mnie do strony 404, dodałem nawet `$query->get_posts()` ale nic nie otrzymuję błędów, jakieś sugestie?


title: Dziwne zachowanie Meta_query

text: Mam niestandardowe pole o nazwie `data_od`. Daty są przechowywane w formacie `rrmmdd` (np. 20131104). Kiedy używam `meta_query` do znajdowania postów w określonym zakresie dat, zapytanie działa zgodnie z oczekiwaniami, ale gdy używam meta_query do znajdowania postów, których data_od jest większa niż określona wartość, nie działa. To znaczy; nie zwraca postów, a wiem na pewno, że powinno. Nie wiem, co robię źle... To działa: $miesiąc = date('m'); $data_początkowa = data( 'Y' . $miesiąc . '01' ); $data_końcowa = data( 'Y' . $miesiąc . 't' ); $meta_query = array( 'key' => 'date_from', 'value' => array($start_date, $end_date), 'compare' => 'BETWEEN', 'type' => 'DATE' ); args = array( 'post_type' => 'events', 'post_status' => 'publish', 'posts_per_page' => 20, 'paged' => $paged, 'meta_query' => array($meta_query), 'meta_key ' => 'data_od', 'zamówienie' => 'meta_wartość', 'zamówienie' => 'ASC', ); $zapytanie = nowe WP_Query($args); A to nie jest: $dzisiaj = data("Ymd"); $meta_query = array( 'key' => 'date_from', 'value' => $today, 'compare' => '>=', 'type' => 'DATE' // Próbowałem też type => „NUMERYCZNE” ); args = array( 'post_type' => 'events', 'post_status' => 'publish', 'posts_per_page' => 20, 'paged' => $paged, 'meta_query' => array($meta_query), 'meta_key ' => 'data_od', 'zamówienie' => 'meta_wartość', 'zamówienie' => 'ASC', ); $zapytanie = nowe WP_Query($args); I działa, gdy używam: $args = array( 'post_type' => 'events', 'post_status' => 'publish', 'posts_per_page' => 20, 'paged' => $paged, 'meta_key' = > 'date_from', 'meta_value' => $today, 'meta_compare' => '>', 'orderby' => 'meta_value', 'order' => 'ASC' ); Dlaczego? Nie mogę użyć `$meta_query = array(...)`, aby znaleźć posty, które mają datę większą niż określona wartość? Wydaje się to naprawdę dziwne, ponieważ kiedy używam dokładnie tych samych wartości bezpośrednio w `$args`, to działa.


title: Ogranicz dostęp do określonego pola widżetu na podstawie roli użytkownika

text: Szukam sposobu na ograniczenie możliwości przeciągania niektórych widżetów do określonych obszarów widżetów w edytorze widżetów. Na przykład chciałbym ograniczyć pole widżetu „reklamy”, aby było dostępne tylko dla administratorów. Byłbym szczęśliwy, gdybym mógł to zrobić, wyłączając możliwość przeciągania i upuszczania w tych polach. Czy ktoś ma jakieś pomysły?


title: Pola niestandardowe w Permalinkach?

text: Zastanawiam się, jak dodać wartość pola niestandardowego do permalinku niestandardowego typu posta? Na przykład mam niestandardowy plik postu ex: cpt-cities.php, który obsługuje rejestrację niestandardowego typu postu i wszystkie te szczegóły. W tym pliku próbuję ustawić jego permalinki, aby zawierały jedną z wartości pola niestandardowego „miasta”. Jestem w stanie ustawić permalinki za pomocą add_permastruct. Jednak nie jestem w stanie uzyskać wartości pola niestandardowego, a get_post_meta() nie działa. Może to być spowodowane tym, że $post->ID nie działa (ponieważ znajduje się w niestandardowym pliku typu post, a nie w pętli postu). Czy ktoś zna sposób na uzyskanie wartości pola niestandardowego w takim pliku? Czy jest gdzieś indziej, w którym mogę zadeklarować add_permastruct, który pozwoli mi pobrać wartość pola niestandardowego? Każda pomoc jest mile widziana, jest to jedna z ostatnich części dość obszernego projektu.


title: Pozbywanie się /my_custom_post_type/ w adresie URL pojedynczego widoku

text: Kiedy czytam post typu niestandardowego w pojedynczym widoku, widzę, że adres URL to www.my_site.com/my_custom_post_type/title_of_my_post. Jak pozbyć się tego brzydkiego /my_custom_post_type/ ?


title: wordpress the_post_thumbnail() nie przycina prawidłowo

text: Używam funkcji wordpress the_post_thumbnail(); ale wydaje się, że zachowuje się inaczej w różnych miejscach. Na jednej stronie mam następujący kod: the_post_thumbnail(array('275', '190')); Robi dokładnie to, co powinno, otrzymuję miniaturę dokładnie 275 x 190, która została przycięta, aby pasowała. Następnie wklejam ten kod do innego szablonu i tym razem obraz został przeskalowany do maksymalnego wymiaru, 275 szerokości w przypadku orientacji poziomej lub 190 w przypadku portretu. Czy ktoś wie, co się dzieje?


title: Jak powiązać wiele CPT za pomocą niestandardowych taksonomii?

text: Mam 3 niestandardowe typy postów - Wydarzenia, Sesje i Prelegenci. Wydarzenia mają wiele sesji. Sesje mają wielu prelegentów. Mówcy mogą być na wielu wszystkich. Wszystkie mają własną powiązaną meta. Jak dotąd 1 hierarchiczna taksonomia, Seria zdarzeń, która odnosi się do zdarzeń i sesji. Nie mogę zrozumieć, jak powiązać Prelegentów i Sesje, jednocześnie będąc w stanie zapewnić możliwość odpytywania wszystkich 3 - sesje na wydarzeniu, prelegenci na sesji, prelegenci na wydarzeniu... Wygląda na to, że musi być stosunkowo prosty sposób na zrobienie tego to taksonomicznie. Powiązanie wielu CPT razem wprawiło mnie w zakłopotanie. To nie są przykłady filmów, aktorów, reżyserów, gatunków, które są tak powszechne. Czy utrudniam to, niż powinno być?


title: Niestandardowe pola na wirtualnej stronie

text: Wykorzystałem rozwiązanie Dave'a Jescha do tworzenia wirtualnych stron (z zawartości tymczasowo zapisanej w niestandardowej tabeli bazy danych, aktualizowanej z RSS co cztery godziny). Zobacz więcej tutaj: http://davejesch.com/wordpress/wordpress-tech/creating-virtual-pages-in-wordpress/ Jak dotąd sprawdziłem, że adres URL wygląda jak jeden z wirtualnych stron (tzn. jest dzieckiem pewien ślimak i zawiera liczby jako pierwszą część ślimaka, jest to oczywiście specyficzne dla mojej strony internetowej). Pobrałem całą zawartość potrzebną do utworzenia strony z mojej niestandardowej tabeli DB. I udało mi się użyć niestandardowego szablonu. To, co mam jeszcze do rozwiązania i potrzebuję pomocy, to rozwiązanie do dodawania (fałszywych) niestandardowych pól do strony bez dodawania ich do bazy danych. Istnieje kilka wartości z tabeli niestandardowej, których chciałbym użyć poza `the_content()`, ale w pętli, tak jak w przypadku pól niestandardowych. Wszystkie sugestie, które widziałem, zapisują dane jako pola niestandardowe do bazy danych, pod identyfikatorem strony -1, ale ponieważ witryna ma dość wielu odwiedzających i wszystkie wirtualne strony otrzymają identyfikator -1, który może się tylko kończyć kiepsko, plus nie chcę zapisywać w bazie śmieci, bo zawartość mojej niestandardowej bazy danych będzie się dość często zmieniać (są to ogłoszenia o pracę, więc będą ich setki i rzadko pozostaną w systemie przez więcej niż kilka tygodni, blaty). Czy istnieje sposób na wysyłanie fałszywych pól niestandardowych wraz z fałszywą stroną, czy jest to lepszy sposób na zrobienie tego? ETA: Poniższy kod to większość tego, co składa się na funkcję. Kilka nazw funkcji zostało zmienionych, aby uczynić je mniej specyficznymi dla klienta, ale ogólnie to większość. Funkcja `get_ip_post()` została pominięta, ponieważ pobiera tylko zawartość z tabeli niestandardowej i zwraca ją jako tablicę. /*********************************************/ /* */ /* Wirtualna strona, klasa i funkcje. */ /* */ /************************************************ */ // Na podstawie: http://davejesch.com/wordpress/wordpress-tech/creating-virtual-pages-in-wordpress/ if (!class_exists('DJVirtualPage')) { class DJVirtualPage { private $slug = NULL ; prywatny $tytuł = NULL; prywatna zawartość $ = NULL; prywatny $autor = NULL; prywatna $data = NULL; prywatny typ $ = NULL; public function __construct($args) { if (!isset($args['slug'])) wyrzuć nowy Exception('Brak informacji dla strony wirtualnej'); $this->slug = $args['slug']; $this->title = isset($args['title']) ? $args['tytuł'] : ''; $this->content = isset($args['content']) ? $args['treść'] : ''; $this->autor = isset($args['autor']) ? $args['autor'] : 1; $this->data = isset($args['data']) ? $args['data'] : current_time('mysql'); $this->dategmt = isset($args['data']) ? $args['data'] : current_time('mysql', 1); echo $args['post_parent_ID']; $this->type = isset($args['type']) ? $args['typ'] : 'strona'; echo $this->post_parent_ID; add_filter('the_posts', array(&$this, 'virtualPage')); } // filtr do tworzenia zawartości wirtualnej strony funkcja public virtualPage($posts) { global $wp, $wp_query; if (count($posts) == 0 && (strcasecmp($wp->request, $this->slug) == 0 || $wp->query_vars['page_id'] == $this->slug)) { //utwórz fałszywy post intance $post = new stdClass; // wypełnij właściwości $post wszystkim, co strona w bazie danych miałaby $post->ID = -1; // użyj niedozwolonej wartości dla identyfikatora strony $post->post_author = $this->author; // id autora posta $post->post_date = $this->date; // data postu $post->post_date_gmt = $this->dategmt; $post->post_content = $this->treść; $post->post_title = $this->title; $post->post_excerpt = ''; $post->post_status = 'opublikuj'; $post->comment_status = 'zamknięty'; // oznacz jako zamkniętą dla komentarzy, ponieważ strona nie istnieje $post->ping_status = 'zamknięta'; // oznacz jako zamkniętą dla pingów, ponieważ strona nie istnieje $post->post_password = ''; // brak hasła $post->post_name = $this->slug; $post->to_ping = ''; $post->pingowane = ''; $post->modified = $post->post_date; $post->modified_gmt = $post->post_date_gmt; $post->post_content_filtered = ''; $post->post_parent = 0; $post->guid = get_home_url('/' . $this->slug); $post->menu_order = 0; $post->post_type = $this->type; $post->post_mime_type = ''; $post->comment_count = 0; // ustaw wyniki filtrowania $posts = array($post); // zresetuj właściwości wp_query, aby zasymulować znalezioną stronę $wp_query->is_page = TRUE; $wp_query->is_singular = PRAWDA; $wp_query->is_home = FAŁSZ; $wp_query->is_archive = FAŁSZ; $wp_query->is_category = FAŁSZ; unset($wp_query->zapytanie['błąd']); $wp_query->query_vars['błąd'] = ''; $wp_query->is_404 = FAŁSZ; } else { } return ($posts); } } } funkcja isJobAd($url){ global $virtual_post_id; if( strpos( $url, 'lediga-uppdrag/' ) > 0 || strpos( $url, 'ledige-oppdrag/' ) > 0 ){ // Sprawdź, czy jesteśmy we właściwym miejscu, szwedzkie i norweskie adresy URL odpowiednio $url_parts = explode( '/', $url ); $slug = koniec($url_parts); $post_id = current(explode("-", $slug)); if(is_numeric($post_id)){ $virtual_post_id = $post_id; zwróć prawdę; } else { return false; } } else { return false; } zwróć prawdę; } function dj_create_virtual() { global $bieżący_blog; globalny $ip_slug; if( !is_admin() ) { $url = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'); $url_parts = rozbij( '/', $url ); $slug = koniec($url_parts); $post_id = current(explode("-", $slug)); if (isJobAd($url)) { $arr_post = get_ip_post( $post_id ); if( is_array( $arr_post ) ) { $args = array('slug' => $ip_slug . '/' . $slug, 'title' => $arr_post['title'], 'content' => $arr_post[ 'opis'], 'type' => 'strona', 'data' => $arr_post['pubdate']); $pg = nowy DJVirtualPage($args); } else { echo 'Nie znaleziono posta.'; } } } } add_action('init', 'dj_create_virtual'); // Użycie page-ip-post.php jako szablonu add_filter( 'single_template', 'portfolio_page_template', 99 ); function portfolio_page_template( $template ) { if ( is_page( -1 ) ) { $new_template = locate_template( array( 'page-ip-post.php' ) ) ); if ('' != $nowy_szablon) { return $nowy_szablon; } } return $szablon; }


title: Funkcja WordPress daje różne wyniki na zewnątrz i wewnątrz testu PHPUnit

text: Bardzo ciężko pracowałem, aby PHPUnit dobrze bawił się WordPressem (z pomocą tego, tego, tego, tego i tego) i myślę, że doszedłem do tego całkiem blisko. Kod, który uruchamiam bezpośrednio przed moimi testami, wygląda tak (zasadniczo zniesiony dosłownie z tego artykułu): ( PHP_SAPI === 'cli' ) || die( 'Odmowa dostępu' ); define( 'PHPUNIT_DB_PREFIX', 'phpunit_' ); globalne $wp_rewrite, $wpdb; zdefiniuj( 'WP_MEMORY_LIMIT', '100M' ); require_once( nazwa_katalogu( __PLIK__ ) . '/../../../../wp-load.php' ); require_once( ABSPATH . 'wp-admin/includes/admin.php' ); wp_set_current_user( 1 ); Wygląda na to, że działa dobrze, z wyjątkiem tego, że funkcje zwracają różne rzeczy w zależności od tego, gdzie się znajdują w pliku. Na przykład, poza klasą testową, `shortcode_exists` zwraca prawdę, podczas gdy w przypadku testowym dokładnie ta sama instrukcja `shortcode_exists` zwraca fałsz. Co ja robię źle? Oto zawartość całego pliku testowego: [Plik zmienił się od czasu, kiedy to pierwotnie opublikowałem...] EDYCJA: Ok, więc śledziłem samouczek J.D. tak dokładnie, jak mogłem. Czuje się _naprawdę_ blisko. Teraz otrzymuję ten błąd: PHPUnit_Framework_Error_Warning : copy(data/not-gettexted-0.php): nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu #0 [funkcja wewnętrzna]: PHPUnit_Util_ErrorHandler::handleError(2, 'copy() data/not-g...', '/Applications/w...', 41, Array) #1 /Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf -accountability/tests/wordpress-dev/trunk/tools/i18n/t/NotGettextedTest.php(41): copy('data/not-gettex...', 'data/not-gettex...') #2 [funkcja wewnętrzna]: NotGettextedTest->test_replace() #3 phar:///Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf-accountability/tests/phpunit-lts. phar/phpunit/Framework/TestCase.php(988): ReflectionMethod->invokeArgs(Object(NotGettextedTest), Array) #4 phar:///Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp- content/plugins/hf-accountability/tests/phpunit-lts.phar/phpunit/Framework/TestCase.php(838): PHPUnit_Framework_TestCase->runTest() #5 phar:/// Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf-accountability/tests/phpunit-lts.phar/phpunit/Framework/TestResult.php(648): PHPUnit_Framework_TestCase->runBare( ) #6 phar:///Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf-accountability/tests/phpunit-lts.phar/phpunit/Framework/TestCase.php( 783): PHPUnit_Framework_TestResult->run(Object(NotGettextedTest)) #7 phar:///Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf-accountability/tests/phpunit- lts.phar/phpunit/Framework/TestSuite.php(779): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult)) #8 phar:///Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp- content/plugins/hf-accountability/tests/phpunit-lts.phar/phpunit/Framework/TestSuite.php(749): PHPUnit_Framework_TestSuite->runTest(Object(NotGettextedTest), Object(PHPUnit_Framework_TestResult)) #9 phar:///Applications /wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plu gins/hf-accountability/tests/phpunit-lts.phar/phpunit/Framework/TestSuite.php(709): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult), false, Array, Array, false) #10 phar:/// Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf-accountability/tests/phpunit-lts.phar/phpunit/TextUI/TestRunner.php(350): PHPUnit_Framework_TestSuite->run( Object (PHPUnit_Framework_TestResult), false, Array, Array, false) #11 phar:///Applications/wordpress-3.8.3-0/apps/wordpress/htdocs/wp-content/plugins/hf-accountability/tests/phpunit- lts.phar/phpunit/TextUI/Command.php(176): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array) #12 /private/var/folders/r5/0w5bp7b13pndfymz_pgf_zz00000gn8)/T : PHPUnit_TextUI_Command->run(Array, true) #13 /private/var/folders/r5/0w5bp7b13pndfymz_pgf_zz00000gn/T/ide-phpunit.php(506): IDE_Base_PHPUnit_TextUI_Command::main() #14 Canmain} Jakikolwiek pomysł napraw to? W międzyczasie zamierzam nadal sprawdzać wszystkie ścieżki plików, które zdefiniowałem w kilku plikach konfiguracyjnych. EDIT EDIT: Ten ostatni błąd został rozwiązany przez modyfikację konfiguracji PhpStorm, której używałem. Musisz zarówno ustawić go na „Użyj alternatywnego pliku konfiguracyjnego”, jak i ustawić zakres testu na „Zdefiniowany w pliku konfiguracyjnym”.


title: Używa przypadków dla widżetu kalendarza

text: Przyjrzałem się więc kilku motywom i odwiedziłem kilka witryn dla twórców motywów i jestem zdezorientowany co do „celu” widżetu kalendarza WordPress. A więc stwierdza, że jest to... > Kalendarz postów w Twojej witrynie Ale naprawdę? Czy to wszystko, do czego służy? Z pewnością istnieje więcej kreatywnych zastosowań tego widżetu. Czy ktoś używa go w jakiś kreatywny sposób? **Edytuj** Pytanie brzmi – jak zmodyfikować widżet kalendarza, aby rozszerzyć jego funkcjonalność do celów niestandardowych.


title: Pomoc przy wyświetlaniu klas postów za pomocą apply_filters

text:
Jestem nowy w pisaniu skryptów, jest to wtyczka, którą chciałbym zmodyfikować, aby wyprowadzać klasy postów. Kiedy próbuję użyć: `apply_filters( 'post_class', $page->post_class )` wyświetla tylko `array=" "`. Czy potrzebuję dodatkowej funkcji, aby podpiąć się pod klasy postów? W moich badaniach nie mogę stwierdzić, czy moja składnia jest nieprawidłowa, czy też brakuje mi funkcji do „wciągnięcia” w klasach do `apply_filters` do uchwycenia. Wielkie dzięki za wszelką pomoc. var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID'); function start_lvl(&$output, $depth = 0, $args = array()) { $indent = str_repeat("\t", $depth); $output .= "\n$indent
\n"; } function end_lvl(&$output, $depth = 0, $args = array()) { $indent = str_repeat("\t", $depth); $output .= "$wcięcie
\n"; } function start_el(&$wyjście, $strona, $głębokość = 0, $args = array(), $id = 0) { if ( $głębokość ) $wcięcie = str_repeat("\t", $głębokość); w przeciwnym razie $wcięcie = ''; ekstrakt($args, EXTR_SKIP); $wyjście .= $wcięcie . '
ID." '.apply_filters( 'post_class', $page->post_class ).'>'.apply_filters( 'the_title', $page->post_title , $page->ID ).''; }


title: Aktualizacja wordpress z 3.5.8 do 3.8.2 za pomocą multisite

text: Przede wszystkim chcę przedstawić się jako początkujący programista Wordpress i wykopać pytania na tym forum przed opublikowaniem tutaj. Nie oznaczaj więc tego pytania jako duplikatu. Mam aplikację wordpress działającą na serwerze Windows. Zaktualizowałem Apache, PHP i Wordpress. Poniżej znajduje się stara i nowa wersja: # Jednostki Stary system Nowy system 1. PHP 5.1 5.3 2. Apache 2.0 2.2 3. Wordpress 3.5.8 3.8.2 4. Wtyczka Multisite 1.5 1.5 5. MySQL DB Wskazywanie na tę samą bazę danych. Tutaj nie ma zmiany. Zainstalowałem nową wersję Apache i PHP na innym serwerze Windows z tą samą konfiguracją. Następnie zainstaluj nową wersję Wordpressa. Kiedy studiowałem na forum WP o ręcznej aktualizacji - postępowałem zgodnie ze wszystkimi krokami i mogłem uzyskać dostęp do nowej aplikacji wordpress. Włączyłem też wtyczkę Multisite oraz umożliwiłem przekierowanie w pliku .htaccess. Teraz, kiedy dostaję się do jakichś linków - system traktuje to jak nowy katalog, a nie stronę osadzoną. **Otrzymuję komunikat o błędzie „404 nie znaleziono”.** Czy ktoś może mi pomóc w rozwiązaniu tego problemu?


title: Dodaj tabindex do navmenu

text: Chciałbym przesłać atrybut "tabindex" w strukturze navmenu. Domyślne opcje nie pozwalają mi na to.


title: Utwórz nową stronę we wtyczce

text: Piszę wtyczkę, która pozwala ludziom dodawać informacje o kursach online. „Kursy” to niestandardowy typ posta. Zrobiłem już menu administratora, aby dodać informacje o kursie do bazy danych (w metatabeli postu). Teraz muszę to wydobyć na przód. Idealnie chciałbym stworzyć nową stronę szablonu (single-courses.php), aby móc w pełni dostosować stronę. Nie znalazłem jeszcze niczego, co pasuje do rachunku w Internecie, czy istnieje łatwy sposób na wygenerowanie tego za pomocą wtyczki? Dziękuję


title: Wyślij dane logowania wraz z treścią komentarza

text: Chciałbym umożliwić moim użytkownikom wysyłanie swoich danych logowania do WordPressa wraz z komentarzem, w przeciwieństwie do konieczności wcześniejszego zalogowania się, a następnie opublikowania komentarza. Nie jestem do końca pewien, do czego się przyczepić, a każda pomoc byłaby bardzo mile widziana. Moim podstawowym planem jest uzyskanie loginu i przepustki (i komentarza), zalogowanie użytkownika (być może podczas preprocess_comment), a następnie dostarczenie identyfikatora użytkownika itp. do obiektu komentarza, a następnie pozwolenie, aby wszystko działało jak zwykle. Ale zastanawiam się, czy w ten sposób otwieram się na jakiś wyzysk. Rozumiem, że WordPress ma formularz logowania i waham się, czy zalogować użytkownika bez przechodzenia przez oficjalny formularz.


title: Wpisy dla wielu użytkowników Wordpress

text: Mam pytanie, chcę, aby moja witryna Wordpress miała wielu użytkowników, takich jak współtwórca moich wpisów na stronie. ale na stronie głównej chcę pokazać tylko moje wpisy, a nie pozostałe. ale chcę również, aby strona lub kanał rss mógł wyświetlać wpisy innych użytkowników. Więc każdy użytkownik nie będzie znał wpisów innych użytkowników, z wyjątkiem tego, że podam im adres URL strony lub kanał rss innego użytkownika. dzięki, .mafaik


title: funkcja wp_dropdown_nav do wyświetlania pozycji menu

text: Czy istnieje funkcja `wp_dropdown_nav`, aby wyświetlić pozycje menu w rozwijanym menu w taki sam sposób, jak w `wp_dropdown_categories`. Muszę wyświetlić menu, gdy rozmiar nośnika jest większy niż 480 pikseli i menu rozwijane, jeśli rozmiar nośnika jest mniejszy niż 480 pikseli. Próbuję wyświetlić listę elementów menu jako menu rozwijanego. Obecnie używam wp_dropdown_categories zamiast elementów menu nawigacji.


title: Niepoprawne renderowanie adresu URL polecanego obrazu w Wordpress, gdy strona jest ładowana, co powoduje uszkodzenie obrazu

text: Przeprowadziłem migrację witryny z mojego serwera testowego na serwer na żywo. Wszystko przesyłane normalnie, tylko polecane obrazy są zepsute i nie są wyświetlane. Adresy URL są renderowane nieprawidłowo, nawet jeśli ponownie prześlę obraz. serwer testowy to dave-conner.com serwer live to qmpdirect.com strona, na której występuje problem to http://qmpdirect.com/cpap-kits/ pierwsza ścieżka do obrazu powinna wyglądać tak: qmpdirect.com/wp- content/uploads/2012/02/sleepstyle600-37440_184x184.jpg, ale zamiast tego renderuje się jako: /home/content/28/9036828/html//wp-content/uploads/2012/02/sleepstyle600-37440_184x184.jpg Jeśli ktoś może powiedzieć mnie, dlaczego tak się dzieje i jak mogę to naprawić, bardzo bym to docenił. Od jakiegoś czasu uderzam głową w ścianę.


title: Jaka jest funkcja uzyskiwania adresu URL bazy wtyczek w wielu witrynach?

text: Używam tej funkcji `plugins_url()`. Ale zawsze odzwierciedla główny adres URL witryny, nawet w podwitrynie. Otrzymuję więc błędy ajax, takie jak „Domeny, protokoły i porty muszą się zgadzać”. Powiedzmy, że moja główna nazwa domeny to „blahblah.com”, a moja subdomena to „mojapoddomena.blahblah.com” Czy jest dostępna jakaś funkcja, która zwraca „mojapoddomena” .blahblah.com/wp-content/plugins` zamiast `blahblah.com/wp-content/plugins`? Dzięki ## Aktualizacja: Od teraz używam w ten sposób. home_url( '/' ).'wp-content/plugins/'.str_replace(basename(__FILE__),"",plugin_basename(__FILE__)) Tutaj tekst `wp-content/plugins/` jest zakodowany na stałe. Więc jest jakaś inna alternatywna metoda?


title: Ulepszenie „inspirowanego” systemu odznak Stackoverflow, aby wyświetlać odznaki na stronie autora

text:
Modyfikuję od dawna porzucony projekt wtyczki, który zapewnia system odznak inspirowany Stackoverflow dla Wordpress. Zaktualizowałem część jego kodu, aby działał z nową wersją Wordpress. Proszę zobaczyć kod wtyczki tutaj: http://pastebin.com/kCWWLPL2 Problem polega na tym, że oryginalny kod nie umożliwiał odtworzenia odznak przyznanych użytkownikowi. Obecnie istnieje sposób wyświetlania identyfikatorów: `<?php rhb_list_badges() ?>` ta funkcja wyświetli listę wszystkich identyfikatorów w systemie. Chcę zmodyfikować kod tak, aby dodając funkcję do strony author.php w Wordpress, **wyświetlał odznaki przyznane użytkownikowi**. Jednak moja wiedza na temat PHP jest bardzo ograniczona i uderzyłem w ścianę. Powiedziano mi, że to może zadziałać: <?php $user_id = get_current_user_id(); if ($user_id != 0) { rhb_list_badges(array('user_ID' => $user_id)); } ?> Ale wszystko, co zrobił, to wylistowanie wszystkich odznak, a nie _tylko_ tych, które zostały przyznane użytkownikowi. Może czegoś brakuje w powyższym kodzie? Jestem przekonany, że musi być na to sposób. Czy wiesz jak? **Aktualizacja:** Jeśli zajrzymy do oryginalnego kodu, zobaczymy, że istnieje już filtr: function rhb_get_badges( $filter = '' ) { global $wpdb; if ( empty($filter ) ) { $filter = array(); } // Domyślne zaznaczenie wszystkich wierszy $sql = 'SELECT identyfikator_plakietki, nazwa, opis, typ FROM ' . $wpdb->przedrostek . 'rh_badges b GDZIE 1=1 '; // Jeśli wprowadzono identyfikator użytkownika. if ( array_key_exists('user_ID', $filter)) { $user_ID = $filter['user_ID']; // Dołącz do tabeli rh_user_badges. $sql = 'SELECT b.badge_id, b.nazwa, b.opis, b.type FROM ' . $wpdb->przedrostek . 'rh_znaczki b,' . $wpdb->przedrostek . 'rh_user_badges ub GDZIE b.badge_id = ub.badge_id AND ub.user_id = ' . $identyfikator_użytkownika; } // Jeśli wprowadzono identyfikator plakietki. if ( array_key_exists('badge_ID', $filter)) { $badge_ID = $filter['badge_ID']; // Dołącz klauzulę WHERE do SQL. $sql .= " AND b.badge_id = $badge_ID"; } $odznaki = $wpdb->get_results($sql); zwróć odznaki $; } function rhb_list_badges( $filter = '' ) { if ( empty($filter )) { $filter = array(); } drukuj ''; foreach (rhb_get_badges( $filter ) as $badge) { print '

type ) echo 'bgold'; elseif ( ' silver' == $badge->type ) echo 'bsilver'; elseif ( 'bronze' == $badge->type ) echo 'bronze'; print '">
' . $znaczek->nazwa . '
'; } ; } Jak mam zamiar go użyć?


title: Usuń ustawienie kolorów w Theme Customizer

text: Tworzę motyw za pomocą narzędzia Theme Customizer i mam kilka opcji z próbnikami kolorów. Wygląda na to, że po ustawieniu koloru za pomocą próbnika kolorów nie ma możliwości jego wyczyszczenia/usunięcia/zresetowania, czy to prawda? Jeśli nie zapisałeś jeszcze swoich ustawień, możesz nacisnąć przycisk anulowania (chociaż stracisz wszystkie niezapisane ustawienia) – ale po zapisaniu jest to już nieodwracalne? A może czegoś mi brakuje?


title: Usuń niestandardowe pola podczas usuwania postów

text: Kiedy usuwam kilka postów, ich niestandardowe pola pozostają w bazie danych, czy istnieje sposób na ich usunięcie również po usunięciu?


title: Sortowanie postów według wartości pola niestandardowego

text: Próbuję posortować posty według ich niestandardowej wartości pola, która jest datą w tym formacie: 9 sierpnia 2012, 7:18 'orderby' => 'meta_value', 'meta_key' => 'wprss_item_date', 'order' = > 'DESC' Czy muszę dokonać konwersji, zanim to zadziała?


title: posts_nav_link() nie wyświetla niczego

text:
Mam trudności z uzyskaniem posts_nav_link() do wyświetlania czegokolwiek. Poniżej znajduje się mój plik szablonu index.php, używam permalinków (format `index.php/2011/08/26/sample-post/`) i aktualnie mam moje `strony bloga pokazują najwyżej` ustawione na ` -1`. Czy ktoś wie, dlaczego linki nie działają? **index.php** <?php get_header(); $args = array('posts_per_page' => 4,'paged' => get_query_var('page')); $mojezapytanie = nowe WP_Query( $args ); ?> <?php while ( $myquery->have_posts() ) : $myquery->the_post(); ?>
<?php the_title(); ?>
 <?php the_content()?> <?php endwhile ?> <?php posts_nav_link() ?> <?php wp_reset_postdata(); ?> <?php get_footer(); ?>


title: Wyszukiwanie terminów z polem wyboru

text: Czy ktoś wie, czy mogę utworzyć listę pól wyboru ze wszystkimi terminami z taksonomii i wyszukać posty należące do zaznaczonych terminów? Wystawianie kategorii w polach wyboru również byłoby bonusem!


title: Jak mogę zabezpieczyć blog WordPress za pomocą OpenID od jednego dostawcy?

text: Niedługo uruchomimy wewnętrzny blog dla firmy, w której pracuję. Duża część bloga będzie dostępna publicznie, ale niektóre posty będą przeznaczone tylko dla pracowników. Nasz intranet/ekstranet ma punkt końcowy OpenID, którego chcielibyśmy użyć do zabezpieczenia prywatnych postów na blogu. Ma to wiele zalet – nie tylko to, że ludzie nie będą musieli logować się za pomocą kolejnej nazwy użytkownika i hasła. Dodatkowo, gdy ktoś nowy na blogu zaloguje się za pomocą swojego OpenID, nie chcemy wymagać od niego założenia lokalnego konta użytkownika WordPress – chcielibyśmy, aby było to obsługiwane automatycznie. Jeśli użytkownik nie istnieje z podanym OpenID, powinien zostać utworzony automatycznie. Nawiasem mówiąc, obraliśmy tę drogę w przypadku oprogramowania innych firm, z którego korzystaliśmy we własnym zakresie. W większości przypadków wykorzystaliśmy wtyczkę konsumencką OpenID dostarczoną wraz z oprogramowaniem (system uczenia oparty na DotNetNuke) i zmodyfikowaliśmy formularz logowania, aby zamiast przedstawiać użytkownikom pole wejściowe adresu URL dla ich OpenID, przedstawialiśmy im przycisk, który po prostu mówi "Zaloguj się przez [Twój Intranet]". Krótko mówiąc, chcielibyśmy: * Zezwolić zdecydowanej większości użytkowników na używanie OpenID do logowania się do WordPressa * Nie wymagać, aby ci użytkownicy mieli już lokalne konto użytkownika WordPress * Ograniczyć akceptowane identyfikatory OpenID do tych z jednej domeny , poprzez zakodowanie używanego punktu końcowego lub skonfigurowanie listy zatwierdzonych domen punktów końcowych Przejrzałem wtyczki dostępne na WordPress.org i nie widzę żadnych, które oferują ten poziom funkcjonalności „po wyjęciu z pudełka”, ale chciałbym usłyszeć od ludzi, którzy mogą coś zasugerować, zwłaszcza od każdego, kto to zrobił. Dodatkowo pomysł, na której wtyczce oprzeć nową wtyczkę, jeśli sami musimy napisać tę pełną funkcjonalność, byłby świetny. Dziękuję. **Aktualizacja: 13.04.:** Zainstalowaliśmy wtyczkę WordPress OpenID i prawdopodobnie użyjemy jej jako naszej bazy. Będę kontynuować ocenę.


title: Jak ustawić różne ustawienia dla motywu mobilnego?

text: Moja wersja WordPress na komputery stacjonarne wymaga użycia strony „statycznej” jako strony początkowej, ponieważ ma ona niestandardowe skróty itp. Chociaż jest to dobre, jeśli chodzi o mój motyw mobilny, niestety strona „statyczna” jest wyświetlana i ponieważ jest to inny motyw, skróty nie są wykonywane. Czy istnieje sposób na poinformowanie motywu mobilnego, aby wyświetlał „posty na blogu” jako stronę domyślną i nie używał „strony statycznej” jako strony początkowej motywu?


title: Szablon archiwum ograniczający do 4 wpisów?

text:
Mam kategorię o nazwie „javascript” i ogranicza ona moją listę tylko do 4 wpisów? <?php get_header(); ?>

Javascript
 <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink() ?>" rel="zakładka" title="Stały link do <?php the_title_attribute(); ?>"><?php the_title(); ?>
 <?php endwhile; ?> <?php endif; ?>

 <?php get_footer(); ?> Link do tej strony to:
<a href="<?php bloginfo('wpurl'); ?>/category/javascript">Javascript


title: Wyświetlaj wnuki na stronach dla dzieci i wnuków za pomocą wp_list_pages

text: Na stronach hierarchicznych o głębokości 3 poziomów chciałbym wyświetlać wnuki na stronach podrzędnych i wnuków (ale nie na stronie nadrzędnej). To, co mam do tej pory, wyświetla wnuki na stronie wnuków, ale nie wiem, jak wyświetlać je na stronach wnuków. W jaki sposób mogę to zrobić? <?php //wyświetlanie stron podrzędnych dla dzieci $childrens_children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); if ( is_page() && $post->post_parent > 0 ) { ?> <aside id="child-child-pages" class="widget widget_child_child_pages"> <ul> <?php echo $childrens_children; ?> </ul> </aside> <?php } ?> **Pomysł** Rodzic : nic nie pokazuj Dziecko : pokaż wnuki rodzica Wnuczek : pokaż wnuki rodzica


title: WordPress Frontend Post Form (Bootstrap Modal) nie tworzy postu

text:
Mam formularz w osobnym pliku PHP w katalogu motywu i jest on zawarty na pasku bocznym szablonu strony głównej. Formularz znajduje się wewnątrz modalu Boostrap. Próbowałem użyć tego kodu, aby umożliwić użytkownikom przesyłanie nowych postów za pomocą formularza, ale ten kod niczego nie wstawia: <?php if ( isset( $_POST['submitted'] ) && isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], 'post_nonce' ) ) { $subjectError = ''; if ( trim($_POST['temat'] ) === '' ) { $subjectError = "Proszę podać temat."; $błąd = prawda; } $post_information = array( 'post_title' => wp_strip_all_tags( $_POST['subject']), 'post_content' => $_POST['postContent'], 'post_type' => 'post', 'post_status' => ' w oczekiwaniu'     ); $post_id = wp_insert_post( $post_information ); if ( $post_id ) { wp_redirect("/home"); Wyjście; } } ?>

Prześlij treść

 <form class="form" id="submit-content-form" method="POST" action="<?php the_permalink(); ?>"> < ?php if ( $subjectError != '' ) { ?> <?php echo $subjectError; ?>

 <?php } ?>
 <etykieta for="" class="etykieta-kontrolna" >Temat
 <input type="tekst" name="temat" id="temat" class="wymagane" value="<?php if ( isset( $_POST[' subject'] ) ) echo $_POST['subject']; ?>" />

 Treść
 <textarea name="postContent" id="postContent" cols="30" rows="10" class="required"> <?php jeśli ( isset( $_POST['postContent'] ) ) { if ( function_exists( 'stripslashes' )) { echo stripslashes( $_POST['postContent'] ); } else { echo $_POST['postContent']; } } ?> </textarea>

 Prześlij plik
 <input type="file" value="Wybierz plik">

 </form>

 <input type ="ukryty" nazwa="przesłano" id="przesłano" wartość="prawda" /> <?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?> Prześlij
 Uprzejmie pomoc ! Jestem tu kompletnie zagubiony. Szukałem wszędzie w Internecie, ale nie mogę znaleźć rozwiązania tego problemu. Co ja tu robię źle? Dziękuję! **EDYTUJ:** Oto działający kod. Teraz tworzy post, ale walidacja nie działa, co pozwoliło na tworzenie pustych postów, dopóki nie dodałem jeszcze jednego sprawdzenia, aby upewnić się, że pole tematu nie jest puste, gdy formularz jest przesyłany. Teraz wpis jest tworzony, a dodatkowa kontrola zapobiega dodawaniu pustych wpisów. Walidacja działa tylko wtedy, gdy dodam blok elseif, aby osobno sprawdzić, które pole jest nadal puste po przesłaniu formularza. <?php if ( isset( $_POST['submitted'] ) && !empty ( $_POST['subject'] ) && isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], ' post_nonce' ) ) { $subjectError = ''; if ( trim($_POST['temat'] ) === '' ) { $subjectError = "Proszę podać temat."; $błąd = prawda; } $post_information = array( 'post_title' => wp_strip_all_tags( $_POST['subject']), 'post_content' => $_POST['postContent'], 'post_type' => 'post', 'post_status' => ' w oczekiwaniu'     ); $post_id = wp_insert_post( $post_information ); if ( $post_id ) { wp_redirect("/home"); Wyjście; } } elseif ( isset( $_POST['submitted'] ) && empty ( $_POST['subject'] ) ) { $subjectError = "Proszę podać temat."; $błąd = prawda; } ?>

Prześlij treść

 <form class="form" id="submit-content-form" method="POST" action="">
 Temat
 <input type="text" name="temat" id="temat" class="required " value="<?php if ( isset( $_POST['temat'] ) ) echo $_POST['temat']; ?>" />

 Treść <?php if ( $subjectError != '' ) { ?> <?php echo $subjectError; ?>

 <?php } ?>
 <textarea name="postContent" id="postContent" cols="30" wierszy ="10" class="required"> <?php if ( isset( $_POST['postContent'] ) ) { if ( function_exists( 'stripslashes' ) ) { echo stripslashes( $_POST['postContent'] ); } else { echo $_POST['postContent']; } } ?> </textarea>

 Prześlij plik
 <input type="plik" value="Wybierz plik"> <input type="ukryty" name="przesłane" id="przesłane" value="przesłane" /> <?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?>

 </form>

 Prześlij


title: Dostosowanie CSS Star Rater do głosowania w Wordpress

text:
Próbuję dostosować kod z kodu CSS Star Rater Rogie, aby zapisać wynik w poście Wordpress. Co najważniejsze, a powodem, dla którego nie używam wtyczki, jest to, że chcę tylko zapisywać wyniki użytkowników i nie pokazywać nikomu wyników, jak to ma miejsce w przypadku witryny konkurencji. Gdzie mam zacząć tworzyć funkcję, która to obsłuży? Patrzyłem na ten post, który dotyczył prostej opcji, ale sam kod nie działał dla mnie. Ten post, nieco przestarzały, również wydaje się pomocny, ale nie byłem pewien, jak będzie działał w połączeniu z moim pomysłem, który polega na zapisywaniu ocen w niestandardowym polu w każdym poście Wordpress. Będę aktualizować, gdy będę nad tym pracował, ale mam nadzieję na kilka wskazówek po drodze. CSS Star Rating HTML:  <input type="radio" name="rating" value="1">> <input type="radio" name=" ocena" value="2"> <input type="radio" name="ocena" value="3"> <input type="radio" name=" rating" value="4"> <input type="radio" name="rating" value="5">  CSS Star Rating JS: $ (':radio').change( function(){ $('.choice').text( this.value + ' stars' ); } ) **UPDATE:** Miałem pomoc od znajomego i my' re znacznie bliżej, ale nadal nie działa. Wartości meta nie są nawet dodawane do posta. Oto kod, który dodaliśmy do funkcji: add_action('wp_ajax_nopriv_post-like', 'post_like'); add_action ('wp_ajax_post-like', 'post_like'); wp_enqueue_script('like_post', get_template_directory_uri().'/js/rating.js', array('jquery'), '1.0', true ); wp_localize_script('like_post', 'ajax_var', array( 'url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('ajax-nonce') )); function post_like() { // Sprawdź bezpieczeństwo nonce $nonce = $_POST['nonce']; if ( ! wp_verify_nonce( $nonce, 'ajax-nonce' ) ) die ( 'Busted!'); if(isset($_POST['post_like'])) { // Pobierz adres IP użytkownika $ip = $_SERVER['REMOTE_ADDR']; // $ip = long2ip(rand(0, "4294967295")); $post_id = $_POST['post_id']; $ocena = $_POST['ocena']; // Pobierz adresy IP wyborców dla bieżącego posta $meta_IP = get_post_meta($post_id, "voted_IP"); $voted_IP = $meta_IP[0]; if(!is_array($voted_IP)){ $voted_IP = array(); } // Pobranie liczby głosów na bieżący post $meta_count = get_post_meta($post_id, "votes_count", true); $meta_rating = get_post_meta($post_id, "votes_rating", prawda); // Użyj już głosował ? if(!hasAlreadyVoted($post_id)){ $voted_IP[$ip] = time(); // Zapisz IP i zwiększ liczbę głosów update_post_meta($post_id, "voted_IP", $voted_IP); update_post_meta($post_id, "votes_count", ++$meta_count); update_post_meta($post_id, "votes_rating", $meta_rating+$rating); // Wyświetl ocenę (tzn. wartość zwracaną przez jQuery) echo $meta_rating; }else{ echo "już"; }         }         Wyjście; } function hasAlreadyVoted($post_id){ global $timebeforerevote; // Pobierz adresy IP głosów na posty $meta_IP = get_post_meta($post_id, "voted_IP"); $voted_IP = $meta_IP[0]; if(!is_array($voted_IP)) $voted_IP = array(); // Pobierz aktualny adres IP użytkownika $ip = $_SERVER['REMOTE_ADDR']; // $ip = long2ip(rand(0, "4294967295")); // Jeśli użytkownik już zagłosował if(in_array($ip, array_keys($voted_IP))) { $time = $voted_IP[$ip]; $teraz = czas(); // Porównaj aktualny czas z czasem głosowania if(round(($now - $time) / 20160) > $timebeforerevote) return false; zwróć prawdę; } zwróć fałsz; } function getPostRatingLink($post_id) { $output = '
'; if (hasAlreadyVoted($post_id)) { $output .= ' Twój głos został zarejestrowany.'; }else{ $output .= ' <input type="radio" name="rating" value="1"> <input type="radio" name="rating" value="2"> <input type="radio" name="rating" value="3">> <input type="radio" name="rating" value="4"> <input type="radio" name="rating" value="5"> <input type="ukryty" name="post_id" value="'.$post_id.'" id="post_id" data-post_id="'.$post_id.'"> '; $wyjście .= '
'; } return $wyjście; } /************************************************** *************************/ add_filter('manage_edit-post_columns', 'add_new_columns'); /** * Dodaj nowe kolumny do tabeli postów * * @param Array $columns - Aktualne kolumny w liście postów */ function add_new_columns( $columns ) { $column_meta = array('meta' => 'Całkowita ocena' ); $kolumny = array_slice( $kolumny, 0, 2, prawda ) + $kolumna_meta + array_slice( $kolumny, 2, NULL, prawda ); return $kolumny; } // Dodaj akcję do kolumny zarządzania postami, aby wyświetlić dane add_action( 'manage_posts_custom_column' , 'custom_columns' ); // Zarejestruj kolumnę jako funkcję sortowalną register_sortable_columns( $columns ) { $columns['meta'] = 'Custom Column'; return $kolumny; } add_filter( 'manage_edit-post_sortable_columns', 'register_sortable_columns' ); /** * Wyświetl dane w nowych kolumnach * * @param $column Bieżąca kolumna * * @return Dane dla kolumny */ function custom_columns( $column ) { global $post; switch ( $kolumna ) { case 'meta': $metaData = get_post_meta( $post->ID, 'votes_rating', true ); echo ($metaData == null) ? 0 : $metadane ; przerwanie; } } A oto JS: $(document).ready(function() { $('.star-rating input').click(function(){ // Pobierz identyfikator posta z atrybutu danych var post_id = $(this) .siblings('input[type="hidden"]').data('post_id'); var rating = $(this).val(); // Ajax wywołanie $.ajax({ type: "post", url : ajax_var.url, data: "action=post-like&nonce="+ajax_var.nonce+"&post_like=&rating="+rating+"&post_id="+post_id, success: function(totalRating){ // Jeśli głosowanie powiodło się if(totalRating ! = "already") { $('.rating .voted').removeClass('dn').find('b').text(rating); $('.star-rating').addClass('dn' ); // $(this).siblings('.count').text('Votes: '+count); } } }); r zwracać fałszywe; }) })


title: Jak masowo usuwać obrazy z biblioteki multimediów?

text: Potrzebuję twojej pomocy. Próbuję masowo usunąć załączniki z niestandardowego typu postu („książka”) za pomocą zapytania sql. Znalazłem ten fragment w formularzu wordpress: Wordpress.org Przetestowałem go na moim lokalnym komputerze i usuwa wszystkie załączniki z mojej biblioteki multimediów. Teraz chciałbym uzyskać twoją pomoc w ustawieniu zapytania tak, aby kierowało ono tylko załączniki (polecany obraz i miniatura) z mojego niestandardowego wpisu typu „książka”. Dziękuję


title: Dynamiczne logo/baner w zależności od linku partnerskiego

text: Buduję witrynę partnerską za pomocą oddziałów woo commerce i wp. Powstanie sieć 20-30 stron afiliacyjnych, połączonych z powrotem do strony głównej. Muszę wyświetlić logo/baner strony odsyłającej na stronie głównej. Jeśli więc użytkownik zostanie przekierowany ze strony Widget Maker 1 do strony głównej, muszę wyświetlić logo lub baner Widget Maker 1 na górze. To samo w przypadku Widget Maker 2, jeśli inny użytkownik zostanie przekierowany z witryny Widget Maker 2 na stronę główną, muszę wyświetlić logo lub baner Widget Maker 2. Ponieważ używanie ciągów zapytań w adresie URL dla linków partnerskich wydaje się, że byłoby to dość trywialne, ale nie wiem, od czego zacząć. Czy ktoś ma jakieś doświadczenie w robieniu tego typu rzeczy?


title: Zmiana strony załącznika Permalink

text: Jak mogę zmienić permalinki strony załącznika na http://domain.com/photos/%attachment_id%/%postname%/%attachmentname% obecnie moje permalinki są ustawione na strukturę niestandardową http://domain.com/%custom_taxonomy%/% post_id%/%postname%/ Utworzono niestandardową taksonomię i przetłumaczony niestandardowy tag taksonomii przy użyciu tej metody add_filter('post_link', 'sections_permalink', 10, 3); add_filter('post_type_link', 'sections_permalink', 10, 3); function section_permalink($permalink, $post_id, $leavename) { if (strpos($permalink, '%sections%') === FALSE) return $permalink; // Pobierz post $post = get_post($post_id); if (!$post) return $permalink; // Pobierz terminy taksonomii $terms = wp_get_object_terms($post->ID, 'sections'); if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug; else $taxonomy_slug = 'projekty'; return str_replace('%sekcje%', $taxonomy_slug, $permalink); } czy to jest właściwy sposób? a moja strona załącznika to http://domain.com/%custom_taxonomy%/%post_id%/%postname%/%attachmentname%


title: Magic Fields daje błąd Plik ___ nie istnieje?

text: Używam WordPressa 3.4 z wtyczką Magic Fields 2.0. Stworzyłem panel zapisu z polem obrazu o nazwie 'icon' jako typem (przesyłanie multimediów), a ikona nie znajduje się w grupie. Jednak za każdym razem, gdy próbuję wywołać funkcje frontendowe funkcji `get_image()`, nie udaje mi się wyświetlić obrazów. Oto mój kod: <?php echo get_image( 'icon', 1, 1, 0, $page->ID ); ?> `$page` to obiekt strony, który pobrałem poza pętlą. Oto wynik: plik „http://domain.com/wp-content/uploads/2012/07/tommy-icon1.jpg” nie istnieje? Kiedy sprawdzam serwer, ten plik istnieje! Kopiuję adres do paska adresu, a obraz ładuje się w przeglądarce. Rozwijam to na moim lokalnym hoście xampp, używając rekordu dns, który znajduje się tylko w moim pliku hosts. Zastanawiam się więc, czy to jest przyczyną problemu? Być może, ponieważ ten plik nie istnieje zdalnie pod tym adresem URL, powoduje to niepowodzenie sprawdzania file_exists gdzieś w Magic Fields. Wszelkie porady dotyczące dostępu do tego obrazu byłyby bardzo mile widziane!


title: Jak dodać nagłówki Expire do obrazów?

text: Staram się trochę przyspieszyć działanie mojej witryny. Jak dodać nagłówki Expire do przesyłanych obrazów? Czy należy to zrobić za pomocą konfiguracji Apache, czy też istnieje ustawienie lub wtyczka do wykonania zadania?


title: 404 Nie znaleziono strony

text: Stworzyłem nową stronę szablonu i dodałem do katalogu motywu, gdzie znajdują się inne strony, archiwum, komentarz, autor i reszta stron. Podczas próby przejścia do niego przez przeglądarkę http://mysite.com/newpage.php otrzymuję błąd 404 nie znaleziono strony. Jaki jest właściwy sposób dodania tej strony, aby była widoczna i jako część motywu zamiast dodawania jej do katalogu głównego?


title: Jak usunąć tytuł i listę „Archiwum” oraz tytuł „Meta”?

text: Jak usunąć 'Widżet Archiwa' i 'Meta widżet' ze stron w moim blogu — na przykład na tej stronie: http://richardclunan.com/? Jak mogę je usunąć z każdej strony, ale zachować je na blogu?


title: zmiana funkcji wp_register

text: jak mogę zmienić funkcję w general-template.php bez wpływania na ten plik core: if (! is_user_logged_in() ) { if ( get_option('users_can_register')) $link = $before . '' . __('Zarejestrować') . '' . $po; do tego: if ( ! is_user_logged_in() ) { if ( get_option('users_can_register')) $link = $before . '' . __('Strona profilowa') . '' . $po;


title: Sprawdź, czy home.php i ustaw home.php jako page_on_front

text: Chcę dołączyć niestandardowy wbudowany plik js tylko na stronie głównej. Nie ustawiłem strony startowej z działu czytania. Używam pliku home.php. function print_my_inline_script() { if (is_home() && wp_script_is( 'jquery', 'done' )) { ?> <script type="text/javascript"> jQuery(document).ready(function($){ $(' .carousel').carousel(); $('.item').hover(function(e){ $(this).find('.summary').stop().fadeTo('fast',1); },function(){ $(this).find('.summary').stop().fadeOut('fast'); }); }); </script> <?php } } add_action( 'wp_footer', 'print_my_inline_script' ); To nie działa. `is_front_page()` również nie działa. Zrobiłem już `<?php wp_reset_query(); ?>` po pętli. Mam jeszcze jedno pytanie. Wiem, że strona domowa zastępuje `index.php` i działa jako strona domowa. Ale nie chcę, żeby moi użytkownicy byli zdezorientowani, kiedy zmienią opcje w sekcji `czytanie`. Znalazłem to, update_option( 'page_on_front', $post->ID ); update_option( 'pokaż_na_przodzie', 'strona' ); ale potrzebuje identyfikatora, a ja nie mam żadnej strony, więc nie mam żadnego identyfikatora. Potrzebuję więc sposobu na ustawienie sprawdzania, czy użytkownik jest w `home.php` (strona domowa) i skoro użycie home.php nadpisuje opcje sekcji czytania, jakieś obejście tego?


title: Jak utworzyć widżet do osadzenia kodu formularza rejestracji, aby formularz rejestracji pojawiał się na każdej stronie?

text: Będę postępować zgodnie z instrukcjami tutaj: http://kb.mailchimp.com/article/how-can-i-add-my-signup-form-on-my-website, aby utworzyć formularz rejestracyjny na mojej stronie . Myślę, że muszę osadzić kod generowany podczas wykonywania tych instrukcji w widżecie. Jak utworzyć widżet, w którym osadzę kod? A po utworzeniu widżetu i dodaniu kodu formularza rejestracji, czy formularz rejestracji pojawi się na każdej stronie w mojej witrynie? W tym posty na blogu? Jeśli nie, jak mogę sprawić, by pojawiał się na każdej stronie? A jak sprawić, by pojawiała się również w każdym poście na blogu? Używam zmodyfikowanego motywu Twenty Eleven Child na tej stronie: http://richardclunan.com/


title: Jak sprawić, by szablon kategorii wyświetlał pełne posty zamiast częściowych postów?

text: Używam Wordpress 3.0.1 z motywem Twenty Ten. Próbuję zmienić sposób wyświetlania postów w widoku kategorii (np. przechodząc do adresu URL, takiego jak mywebsite.com/category/mycategory). Obecnie posty w widoku kategorii pokazują tylko pierwszą część posta, ale chciałbym to zmienić, aby wyświetlał całość. W pliku Category Template (category.php) znajduje się kilka linijek kodu, które wyglądają, jakby były odpowiedzialne za generowanie danych kategorii: /* Uruchom pętlę dla strony kategorii, aby wyprowadzić posty. * Jeśli chcesz przeciążyć to w motywie potomnym, dołącz plik * o nazwie loop-category.php, który będzie używany zamiast tego. */ get_template_part( 'pętla', 'kategoria' ); ?> Ponieważ komentarze wspominają o konfigurowaniu motywu potomnego, poszedłem dalej i postępowałem zgodnie z tymi instrukcjami (za pośrednictwem tej odpowiedzi), aby skonfigurować motyw potomny, abym mógł dodać swoją niestandardową funkcjonalność. Z komentarzy widzę, że mam utworzyć plik o nazwie loop- category.php z moją niestandardową implementacją, ale nie wiem, jaki kod mam w tym pliku umieścić. Co muszę dodać do loop-category.php, aby wyświetlić widoki kategorii z pełnymi wpisami na blogu? _UWAGA: Chociaż od dłuższego czasu używam Wordpressa, to jest to moje pierwsze zanurzenie się w dostosowywaniu motywów. Każda pomoc byłaby bardzo mile widziana._


title: Niestandardowa strona z wpisami na blogu

text: Znalazłem tutaj przykład tworzenia niestandardowej strony postu na blogu: http://www.wpbeginner.com/wp-themes/how-to-create-a-custom-homepage-in-wordpress/ 1) Utworzyłem stronę bloga w sekcji Strony > Dodaj nowy 2) W obszarze Szablon wybieram „Blog” 3) Zauważ, że utworzyłem plik blog.php w moim niestandardowym motywie, który ma następującą zawartość: <?php /* Nazwa szablonu: Blog */ ?> <? echo php "Witaj świecie"; $temp = $wp_query; $wp_query= null; $wp_query = nowe WP_Query(); $wp_query->query('posts_per_page=5'.'&paged='.$paged); while ($wp_query->have_posts()): $wp_query->the_post(); ?> 4) W ustawieniach > czytanie, w sekcji „Wyświetlanie strony przedniej” ustawiam „Strona postów:” na „Blog”. Teraz przeglądam stronę mojego bloga w przeglądarce, po prostu renderuje wszystkie moje posty. Ale nie ma echa „Hello World” i jeśli usunę kod z blog.php, nie ma to żadnego efektu! Po prostu renderuje wszystkie posty. A potem próbuję dodać niestandardowe zapytanie: <?php /* Nazwa szablonu: Blog */ ?> <?php global $wpdb; $content = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_type = %s LIMIT 1", 'header_post' ) ); echo $content->post_content; ?> I znowu ignoruje to i po prostu renderuje wszystkie posty z post_type of post i post_status of Publish. Oczywiście kod w moim blog.php jest ignorowany. Czemu? Tak też obecnie wygląda (brakuje daty postu, brak komentarza): http://i49.tinypic.com/2caq0g.jpg Wprowadziłem zmiany w index.php w moim motywie: <?php $temp = $wp_query; $wp_query= null; $wp_query = nowe WP_Query(); $wp_query->query('posts_per_page=1'.'&paged='.$paged); while ($wp_query->have_posts()): $wp_query->the_post(); ?> i nadal bez efektu


title: Pomijanie opcji formularza

text: oto sytuacja. Używam wtyczki i chociaż działa (w połowie), nie mam dostępu do strony ustawień. Wtyczka służy do pobierania miniatury z YouTube i innych witryn wideo, ale problem polega na tym, że ze względów estetycznych muszę osadzić wideo za pomocą specjalnego pola „Polecane”. Działa dobrze, jeśli po prostu umieszczę wideo w poście, w „zwykły sposób”. Zrobiłem trochę badań i najwyraźniej wtyczka akceptuje wartość pola niestandardowego (co może rozwiązać mój problem), ale muszę umieścić nazwę pola niestandardowego na stronie ustawień. Z jakiegoś powodu nie mam do niego dostępu i otrzymuję tylko pustą stronę. Myślę, że może to być konflikt wtyczek, ale próbowałem aktywować i dezaktywować inne i nadal nie mam szczęścia. Spojrzałem na kod i znalazłem tę część: Pole niestandardowe (opcjonalnie: jeśli Twój film jest przechowywany w polu niestandardowym, wpisz tutaj nazwę tego pola. W przeciwnym razie pozostaw to pole puste).	 <fieldset><legend class="screen-reader-text">Pole niestandardowe (opcjonalnie: jeśli Twój film jest przechowywany w polu niestandardowym, wpisz tutaj nazwę tego pola. W przeciwnym razie pozostaw to pole puste.)</legend> <input name="video_thumbnails_custom_field" type="text" id="video_thumbnails_custom_field" value="<?php echo get_option( 'video_thumbnails_custom_field' ); ?>" /> i Uważam, że tutaj używa danych wejściowych z formularza: // Pobierz wpis lub pole niestandardowe do wyszukiwania, jeśli ( $video_key = get_option( 'video_thumbnails_custom_field' )) { $markup = get_post_meta( $post_id, $video_key, true ); } else { $post_array = get_post( $post_id ); $markup = $post_array->post_content; $znacznik = zastosuj_filtry( 'zawartość', $znacznik ); } $nowa_miniatura = null; Moje pytanie brzmi, jak pominąć i po prostu zakodować swoją niestandardową nazwę pola? Próbowałem przypisać wartość bezpośrednio do $video_key (więc jest to $video_key = $skyali_video >> wartość prezentowanego wideo motywu) i różne odmiany umieszczania nazwy pola niestandardowego („skyali_video”), ale nadal nie udało mi się. Z góry dziękuję.


title: metaboksy znikają na zapisanych stronach

text:
Ok, mam dziwny problem z niestandardowymi polami meta, dla których nie mogę się doczekać. Używam tej klasy <?php class ARIXWP_Meta { private $meta = null; publiczny $postid = null; prywatny szablon $ = null; function __construct() { add_action('save_post',array(&$this, 'save_meta_data')); } funkcja __destruct() { $this->meta = null; $this->postid = null; $this->szablon = null; } funkcja public init_meta() { add_action('admin_init',array(&$this, 'add_meta')); } public function add_meta() { if ($this->meta['szablon'] == $this->szablon) { add_meta_box($this->meta['id'], $this->meta['title' ], array(&$this, 'format_meta'), $this->meta['post_type'], $this->meta['context'], $this->meta['priority']); } } funkcja publiczna format_meta() { global $post; if (!isset($post)) zwraca false; if ($this->meta['post_type'] != $post->post_type) return false; $this->set_postid($post->ID); // Użyj nonce do weryfikacji echo '<input type="hidden" name="' . $this->meta['nonce_name'] '" value="', wp_create_nonce(basename(__FILE__)), '" /> '; foreach ($this->meta['fields'] as $field) { // pobierz aktualne meta dane postu $meta = get_post_meta($post->ID, $field['id'], true); if (isset($pole['before']) && $field['before'] != "") { echo '
' . $pole['przed'] . '
'; } echo ''. $pole['nazwa']. '
'; if (isset($field['desc']) && $field['desc'] != "") { echo '
' . $pole['opis'] . '
'; } if ( $field['type'] == 'radio' ) echo '
'; switch ($field['type']) { case 'text': echo '<input type="text" name="'. $field['id']. '" id="'. $field['id' '] .'" value="'. ($meta ? $meta : $pole['default']). '" class="arixwp_admin_input" />'. '
'; przerwanie; case 'textarea': echo '<textarea name="'. $field['id']. '" id="'. $field['id']. '" cols="60" rows="4" klasa ="arixwp_admin_input">'. ($meta ? $meta : $pole['domyślny']) . '</textarea>'. '
'; przerwanie; case 'select': echo '<select name="'. $field['id'] '" id="'. $field['id'] '" class="arixwp_admin_select">'; foreach ($pole['opcje'] jako $opcja) { echo '<opcja'. ( $meta == $opcja ? 'select="selected"' : '' ). '>'. $opcja . '</option>'; } echo '</select>'; przerwanie; case 'radio': foreach ($pole['opcje'] as $option) { // echo '<input type="radio" name="' . $pole['id'] .'" value="' . $opcja['wartość'] ''"' . ( $meta == $option['value'] ? 'checked="checked"': ''). ' />' . $opcja['nazwa'] . '
'; echo '<input type="radio" id="' . $pole[ 'id'] . $opcja['value'] '" name="' . $pole[ 'id'] '" value=" ' . $opcja['wartość'] '"' . ( $meta == $opcja[ 'wartość'] ? 'sprawdzone="sprawdzone"': ''). ' />' . $opcja[ 'imię'] . ''; }                         przerwanie; case 'pole wyboru': echo '<input type="pole wyboru" name="' . $pole['id'] '" id="' . $pole['id'] '"' . ( $meta ? 'checked="sprawdzone"' : '' ). ' />'; przerwanie; } if ( $field['type'] == 'radio' ) echo '
'; // echo '
'; } } funkcja publiczna save_meta_data($post_id) { global $post; if (!isset($post->ID)) { $post = get_post($post_id); } $this->set_postid($post->ID); $this->meta = $this->get_meta(); if ($this->meta['post_type'] != $post->post_type) return $post_id; $_POST[$this->meta['nonce_name']] = isset($_POST[$this->meta['nonce_name']]) ? $_POST[$this->meta['nonce_name']] : ""; //Zweryfikuj nonce if (!wp_verify_nonce($_POST[$this->meta['nonce_name']], basename(__FILE__))) { return $post_id; } //Sprawdź autozapis if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post_id; } //Sprawdź uprawnienia if (isset($_POST['post_type']) && 'page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) { return $post_id; } } elseif (!current_user_can('edit_post', $post_id)) { return $post_id; } foreach ($this->meta['fields'] as $field) { $old = get_post_meta($post_id, $field['id'], true); $nowy = isset($_POST[$pole['id']]) ? $_POST[$pole['id']] : ''; if ($nowy && $nowy != $stary) { update_post_meta($post_id, $field['id'], $new); } elseif ('' == $nowy && $stary) { delete_post_meta($post_id, $field['id'], $old); } } } funkcja public set_postid($axPostId = 0) { $postID = null; $postID2 = null; if ($axPostId > 0) { $this->postid = $axPostId; } else { if ( isset( $_GET['post'] ) ) { $postID = filter_var( $_GET['post'], FILTER_VALIDATE_INT ); if ( isset( $_POST['post_ID'] ) ) { $postID2 = filter_var( $_POST['post_ID'], FILTER_VALIDATE_INT ); } else { $postID2 = ''; } $this->postid = $postID ? $IdPoczty : $IdPoczty2 ; } } } public function get_postid() { return $this->postid; } public function set_template() { $this->template = get_post_meta($this->postid,'_wp_page_template',TRUE); } public function get_template() { return $this->template; } funkcja publiczna set_meta($axMeta) { update_post_meta($this->postid, '_arixwp_field_meta', serialize($axMeta)); $to->meta = $axMeta; } public function get_meta() { if (is_null(($this->meta))) { $this->meta = unserialize(get_post_meta($this->postid,'_arixwp_field_meta',TRUE)); } return $this->meta; } } i to jest php do wywołania klasy <?php $meta_template = ''; $meta_posttype = 'strona'; $ meta_title = 'Opcje strony'; $meta_context = 'normalny'; $ meta_priority = 'wysoki'; $meta_id = 'meta-strony'; $meta_nonce = $meta_id . '-chwilowo'; $arixwp_meta = nowa ARIXWP_Meta(); $arixwp_meta->set_postId(); $arixwp_meta->set_template(); $arixwp_template = $arixwp_meta->get_template(); if ($arixwp_template == $meta_template) { $arixwp_meta->set_meta(array( //To jest identyfikator zastosowany do pola meta 'id' => $meta_id, //To jest typ posta, dla którego meta jest dla 'post_type ' => $meta_posttype, //To jest szablon pokazujący meta dla 'template' => $meta_template, //To jest jednorazowa dla tej meta 'nonce_name' => $meta_nonce, //To jest tytuł, który się pojawia w kontenerze meta pola 'title' => $meta_title, //Określa część strony, w której sekcja ekranu edycji powinna być pokazana 'context' => $meta_context, //Ustawia priorytet w kontekście, w którym pola powinien pokazać 'priority' => $meta_priority, //Tutaj definiujemy wszystkie pola, które chcemy we mnie ta box 'fields' => array( // Pokaż lub ukryj polecane posty array( 'before' => '', 'after' => '', 'name' => __( 'Pokaż polecane posty', THEMENAME ), 'desc' => __( 'Pozwala to pokazać lub ukryć baner polecanych postów na tej stronie. ( Uwaga: to zastąpi ustawienie w panelu sterowania motywami. )', THEMENAME ), 'id' => '_arixwp_featured_show_page', 'type' => 'radio', // text,textarea,select,radio,checkbox ' default' => 'home', 'options' => array( array('name' => __( ' Tak', THEMENAME ), 'value' => 'tak'), array('name' => __( ' No', THEMENAME ), 'value' => 'no') ) ), // Metoda wyświetlania polecanych postów array( 'before' => '', 'after' => '', 'name' => __( 'Wyświetlanie polecanych postów', THEMENAME ), 'desc' => __( 'To kontroluje sposób wyświetlania polecanych postów. Możesz pokazać jedną główną funkcję i 3 normalne funkcje, jedną główną tylko funkcja, tylko trzy normalne funkcje lub suwak jQuery, który przesuwa się przez ostatnie 4 posty w wyróżnionej kategorii. ', THEMENAME ), 'id' => '_arixwp_featured_display_page', 'type' => 'radio', // text,textarea,select,radio,checkbox 'default' => 'four', 'options' => array( array('name' => __( ' Główna cecha i 3 normalne cechy', THEMENAME ), 'value' => 'cztery', 'class' => 'wparix_feature_four' ), array('name' => __( ' Tylko główna funkcja', THEMENAME ), 'value' => 'one', 'class' => 'wparix_feature_one' ), array('name' => __( ' 3 normalne funkcje', THEMENAME ), 'value' = > 'three', 'class' => 'wparix_feature_three' ), array('name' => __( ' Slidertron Slider', THEMENAME ), 'value' => 'slide', 'class' => 'wparix_feature_slide' ) ) ), // Tablica lokalizacji paska bocznego ( 'before' => '', 'after' => '', 'name' => __( 'Lokalizacja paska bocznego', NAZWA TEMATU ), 'desc' => __( 'Pozwala to zmienić domyślne ustawienia paska bocznego.' , THEMENAME ), 'id' => '_arixwp_sidebar_page', 'type' => 'radio', // text,textarea,select,radio,checkbox 'default' => 'left', 'options' => array( array ('name' => ' Left', 'value' => 'left'), array('name' => ' Right', 'value' => 'right'), array('name' => ' Brak ', 'wartość' => 'brak')) ) ), ) )); $arixwp_meta->init_meta(); } $arixwp_meta = null; Używam kilku przykładów tego dla postów i niestandardowych szablonów stron i działa dobrze. Ale kiedy próbujesz zastosować go do ogólnej strony. Pola Meta pokazują się, gdy zdecydujesz się dodać nową stronę. Ale jak tylko zapiszesz lub opublikujesz, znikają.


title: Czy używać Ajax do filtrowania postów?

text: W tej chwili przesyłam formularz rozwijany do jego własnej strony (action=""), aby filtrować wyświetlane posty. Chciałbym nie musieć odświeżać strony, co resetuje formularze. Czy istnieje sposób na zapytanie o posty/filtrowanie ich za pomocą ajax?


title: Czy złą praktyką jest przechodzenie bezpośrednio do bazy mysql podczas tworzenia wtyczki?

text: To jest przykład wtyczki Vote it Up: //Uruchom to, aby utworzyć wpis dla wpisu w systemie głosowania. Sprawdzi, czy post istnieje. Jeśli nie, utworzy wpis. funkcja SetPost($post_ID) { global $wpdb; // zapobiega wstrzyknięciu SQL $p_ID = $wpdb->escape($post_ID); //Sprawdź, czy wpis istnieje $id_raw = $wpdb->get_var("SELECT ID FROM ".$wpdb->prefix."votes WHERE post='".$p_ID."'"); if ($id_raw != '') { //wpis istnieje, nic nie rób } else { //wpis nie istnieje $wpdb->query("INSERT INTO ".$wpdb->prefix."votes (post, głosy, goście, usersinks, guestinks) WARTOŚCI(".$p_ID.", '', '', '', '') ") or die(mysql_error()); } } //Uruchom to, aby utworzyć wpis dla użytkownika w systemie głosowania. Sprawdzi, czy użytkownik istnieje. Jeśli nie, utworzy wpis. funkcja SetUser($user_ID) { global $wpdb; // zapobiega wstrzyknięciu SQL $u_ID = $wpdb->escape($user_ID); //Sprawdź, czy wpis istnieje $id_raw = $wpdb->get_var("SELECT ID FROM ".$wpdb->prefix."votes_users WHERE user='".$u_ID."'"); if ($id_raw != '') { //wpis istnieje, nic nie rób } else { //wpis nie istnieje $wpdb->query("INSERT INTO ".$wpdb->prefix."votes_users (użytkownik, głosy, tonie) VALUES(".$u_ID.", '', '') ") or die(mysql_error()); } } //Zwraca funkcję liczenia głosów GetVotes($post_ID, $percent = false) { global $wpdb; // zapobiega wstrzyknięciu SQL $p_ID = $wpdb->escape($post_ID); //Utwórz wpisy, jeśli nie istnieją SetPost($p_ID); //Pobiera głosy $votes_raw = $wpdb->get_var("SELECT głosy FROM ".$wpdb->prefix."votes WHERE post='".$p_ID."'"); $sinks_raw = $wpdb->get_var("SELECT usersinks FROM ".$wpdb->prefix."votes WHERE post='".$p_ID."'"); $guestvotes_raw = $wpdb->get_var("WYBIERZ gości FROM ".$wpdb->prefix."votes WHERE post='".$p_ID."'"); $guestsinks_raw = $wpdb->get_var("SELECT guestinks FROM ".$wpdb->prefix."votes WHERE post='".$p_ID."'"); /* Przestarzałe $usservotes_raw = $wpdb->get_var("SELECT głosy FROM ".$wpdb->prefix."votes_users WHERE user='".$u_ID."'"); $usersinks_raw = $wpdb->get_var("SELECT sinks FROM ".$wpdb->prefix."votes_users WHERE user='".$u_ID."'"); */ //Umieść to w formie tablicy $votes = explode(",", $votes_raw); $sinks = eksploduj(",", $sinks_raw); $guestvotes = eksploduj(",", $guestvotes_raw); $guestsinks = eksploduj(",", $guestsinks_raw); /* Przestarzałe $usernotes = explode(",", $usernotes_raw); $usersinks = eksploduj(",", $usersinks_raw); */ $useroty = 0; $pochłaniacze użytkowników = 0; $początkowe = 0; //Początkowy nr. głosów [zostanie ustawione na -1, gdy wszystkie posty otrzymają głosy] (i tak dalej...) Słyszałem od wielu osób, że złą praktyką jest przechodzenie bezpośrednio do bazy mysql. Że kod może się zepsuć w przyszłych wersjach Wordpress. A może jest to konieczne w niektórych wtyczkach, takich jak Głosuj na to?


title: Używanie WP Rewrite do przepisywania niestandardowych adresów URL w tym scenariuszu

text: Zbudowałem wtyczkę, w której mogę wyświetlać specjalne strony php na stronie za pomocą shortcode. Katalog wtyczek składa się z następujących stron php. product_info.php index.php account.php login.php checkout.php core.php Funkcja shortcode znajdująca się na `core.php` jest następująca: function output_store(){ if(!isset($_REQUEST['slug']) )) include(WP_PLUGIN_DIR.'/'.basename(dirname(__FILE__)).'/index.php'); if($_REQUEST['slug']) include(WP_PLUGIN_DIR.'/'.basename(dirname(__FILE__)).'/'.$_REQUEST['slug']); } function filter($content = '') { if ( '' == $content || !strstr($content, '[WP_online_store]')) { return $content; } return preg_replace('|(<p>)?(\n)*[(\[)WP_online_store(\])](\n)*(</p>)?|', do_shortcode( '[WP_online_store]' ), $treść); } add_shortcode('output_store', 'output_store'); add_filter('zawartość', 'filtr'); `[output_store]` zostanie umieszczony na dowolnej stronie, na przykład na stronie `store`, więc kiedy odwiedzę stronę `store` domyślna zawartość tej strony wyświetli plik `index.php` z katalogu wtyczek. W pliku `index.php` mam linki dostępu do `login.php, product_info.php, account.php i checkout.php` każdy ma adres URL: login.php => http://website.com/store/ ?slug=login.php product_info.php => http://website.com/store/?slug=product.info.php account.php => http://website.com/store/?slug=account.php checkout.php => http://website.com/store/?slug=checkout.php Również na `index.php` mam tam produkty ściągnięte z bazy mysql, w której są dostępne przez linki typu `http://website.com /store/?slug=product_info.php&products_id=38` i tak dalej. Teraz chciałem przepisać te adresy URL, aby były przyjazne dla wyszukiwarek. Chciałem, aby: http://website.com/store/?slug=login.php został http://website.com/store/login http://website.com/store/?slug=account.php został http://website.com/store/account http://website.com/store/?slug=checkout.php, aby stać się http://website.com/store/checkout i wszystkimi adresami URL produktów: np. http:// website.com/store/?slug=product_info.php&products_id=38, aby stać się http://website.com/store/product-info/38 Jak mogę to osiągnąć za pomocą WP Rewrite Wordpress? Próbowałem tego dla stron z informacjami o produkcie: // Zdefiniuj funkcję permalinków add_query_vars($aVars) { $aVars[] = "products_id"; zwróć $aVars; } function add_rewrite_rules($aRules) { $aNewRules = array('product-info/([^/]+)/?$' => 'index.php?slug=product_info.php&products_id=$matches[1]'); $aReguły = $aNoweReguły + $aReguły; zwróć $aRule; } add_filter('query_vars', 'add_query_vars'); add_filter('rewrite_rules_array', 'add_rewrite_rules'); function isset_productinfo() { if(isset($wp_query->query_vars['products_id'])) { $sMsdsCat = urldecode($wp_query->query_vars['products_id']); } } add_action('init','isset_productinfo'); // Zakończ specjalne permalinki Opróżniłem moje permalinki i nie działa.. Kiedy wchodzę na `http://website.com/store/product-info/38` i wchodzę na `http://website.com/store/` wyświetlania strony produktu. Jak mogę to naprawić? czy macie jakieś inne rozwiązania? Proszę pomóż..


title: Projekt WordPress pod Mercurial, jaki jest odpowiedni plik .hgignore?

text: Dla tych z was, którzy kontrolują swój projekt za pomocą Mercurial, jestem ciekaw, co umieściliście w swoim pliku .hgignore? Nie wiem, co powinienem w nim zawrzeć. Myślę po prostu wykluczyć dane z pamięci podręcznej i plików, ale cokolwiek innego? Dziękuję. EDYCJA: Z jakiegoś powodu nazwałem .hgrc zamiast .hgignore, mój zły. Wygląda jednak na to, że respondenci poniżej wiedzieli, o co mi chodzi :) Przepraszam.


title: Jak kwestionować posty, które nie mają ze sobą nic wspólnego?

text: Możemy ręcznie uzyskać wiele postów na stronie, ale jest to generowane w szablonie, PO tym, jak domyślne zapytanie zwróciło coś innego (strona/post itp.) np. według identyfikatora: http://example.com/?p=23,18,2,199,6,8 Udało mi się, że już działa parsowanie zmiennej w szablonie nazwa-strony.php, ale gdy już pobierze szablon, jest już za późno na generować m.in. kanoniczne. Myślę, że byłoby to coś podobnego do wyszukiwania, z wyjątkiem tego, że wyszukiwanie jest relacją 1-do-wielu postów i wymaga wielu zapytań-do-unikalnego-postu (każdy). Dziękuję.


title: do czego służy katalog pamięci podręcznej w moim motywie? (kontrola wersji?)

text: Zastanawiałem się, jakie procesy dokładnie używają katalogu `cache` wewnątrz katalogu mojego motywu. Dokładniej, zastanawiam się, czy powinienem dodać któryś z tych plików do mojego repozytorium git.


title: Jak mogę dołączyć blog_id do ... echo [functions-defined-constant]?

text: Często używam „stałych”. Ustawiam je w functions.php jak `define('mojtemem_miasto', 'Orlando');` a następnie wołam je do motywu `<?php echo myteme_town ; ?>`. To proste i łatwe. Ale potrzebuję ich, aby były specyficzne dla witryny (dla wielu witryn), więc pomyślałem, że możliwe jest dodanie bieżącego identyfikatora bloga do wywołania motywu i zadeklarowanie stałych dla każdego MultiSite w functions.php? Nie wiem, jak to zakodować, ale to, co staram się osiągnąć w pliku motywu to... `<?php echo [current_blog]_mytheme_town ; ?>` ..... Na przykład **In functions.php** // ustaw stałe dla wszystkich multisite'ów używających tego motywu // awebsite.org : site_id=1 define('1_mytheme_town', 'Orlando'); define('1_mytemem_temat', 'jedzenie'); define('1_mytheme_p1', 'To jest tekst pierwszego akapitu'); // adifferentsite.com: site_id=2 define('2_mytheme_town', 'Nowy Jork'); define('2_mytheme_temject', 'wino'); define('2_mytheme_p1', 'To jest tekst pierwszego akapitu'); // anothersite.net : site_id=3 define('3_mytheme_town', 'LA'); define('3_mytheme_subject', 'Pączki'); define('3_mytheme_p1', 'To jest tekst pierwszego akapitu'); **W plikach motywów** Wywołaj stałe używając bieżącego identyfikatora bloga, tak jak tutaj... `<?php echo [bieżący_blog]_mojtemat_miasto ; ?>` `<?php echo [bieżący_blog]_mojtemat_temat ; ?>` `<?php echo [bieżący_blog]_mójtemat_p1 ; ?>` Próbowałem cały dzień, ale zgaduję i nie bardzo wiem co robię. Wszystko, czego próbowałem, działa, ale po prostu odzwierciedla tekst kodu > 1_mytheme_town, a nie stałą zdefiniowaną w functions.php. Mam nadzieję, że rozumiesz, co próbuję wyjaśnić.


title: Dodać pasek boczny/edytor widżetów do ekranu edycji posta?

text: Istnieją (między innymi) dwa popularne sposoby dostosowywania paska bocznego w pojedynczym poście: 1. **Utwórz nowy pasek boczny dla posta** za pomocą kodu lub wtyczek, takich jak Niestandardowe paski boczne, Niestandardowy pasek boczny WP, Paski boczne na stronę lub podobne . 2. **Tworzenie warunkowych reguł wyświetlania dla poszczególnych widżetów** , używając wtyczek takich jak Widget Logic lub Warunkowe Widgety. Opcja 1 może prowadzić do mnożenia się pasków bocznych na stronie z widżetami, jeśli masz więcej niż kilka postów, które chcesz dostosować. Opcja 2 może szybko doprowadzić do długich, skomplikowanych i trudnych w zarządzaniu pasków bocznych w backendzie. Zarówno w przypadku 1, jak i 2 użytkownik musi zarządzać rzeczami na osobnej stronie niż ta, którą chce dostosować. ## A więc: Czy są jakieś wtyczki — lub powiązane próby — dodania paska bocznego/edytora widżetów (jak w **Wygląd » Widgety**) do ekranu edycji posta? Pomysł polegałby na umożliwieniu użytkownikowi nadpisania domyślnego paska bocznego na danej stronie w wygodny i intuicyjny sposób. To może działać mniej więcej tak: * Dodaj metabox zawierający pole wyboru, aby zastąpić domyślny pasek boczny w tym poście lub na stronie. * Jeśli zaznaczone, wyświetl interfejs, aby wybrać widżety. (może to być pełny „bank” widżetów, ale bardziej ekonomicznie może to być po prostu lista rozwijana z nazwami widżetów). * Aby uzyskać interfejs i zapisać, odtwórz kod z Wygląd » Widgety * Na przedniej stronie witryny dołącz filtr, aby zastąpić domyślny pasek boczny, jeśli tak mówi metapole `_override_sidebar`. Jestem zaskoczony, że nie mogę znaleźć wtyczki do tego. Czy masz sugestie — wtyczki, pułapki, powiązany kod? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/TH3LZ.png)


title: Przeładowanie strony nastąpi przed zakończeniem żądania

text:
Napisałem wtyczkę, aby wysłać zaproszenie do znajomego i przesyłam formularz za pomocą AJAX i wykorzystałem wskazówki omówione w 5 wskazówkach dotyczących używania AJAX w wordpressie i innym artykule, do którego odwołuje się strona AJAX w kodeksie wordpress wtyczek. Mam teraz odpowiedni kod wykonujący i wysyłający wiadomość e-mail zgodnie z oczekiwaniami, jednak strona jest ponownie ładowana przed zakończeniem wywołania AJAX. Odpowiedni kod PHP jest tutaj: <?php define( 'SEND_INVITATION_MIN_WORDPRESS_VERSION', '3.1.1' ); define( 'SEND_INVITATION_PLUGIN_URL', plugins_url( '', __FILE__ ) ); // Połącz się z hookami WordPressa i wszelkimi funkcjami, które powinny działać podczas ładowania. // add_action( 'init', array( 'NC_SendInvitation', 'send_invitation_init' ) ); class NC_SendInvitation { protected $nonce_name = 'send_invitation'; chroniony $post_url = ''; public static funkcja send_invitation_init() { nowe siebie; } funkcja publiczna __construct() { $this->send_invitation_head(); $this->send_invitation_check_wordpress_version(); add_action( 'show_invitation_form', array( $this, 'send_invitation_get_form' ), 10, 1 ); // Dodaj akcje AJAX // Obsługuje zalogowanych użytkowników add_action( 'wp_ajax_form_action', array( $this, 'send_invitation_handle_submit' ) ); // Obsługuje niezalogowanych użytkowników add_action( 'wp_ajax_nopriv_form_action', array( $this, 'send_invitation_handle_submit' ) ); } public function send_invitation_head() { // Dodaj skrypt obsługujący żądania AJAX POST do nagłówka wp_enqueue_script( 'send-invitation-ajax-handle', plugins_url( 'js/ajax.js', __FILE__ ), array( 'jquery' ) ); // Zlokalizuj skrypt dowiedz się, co to robi wp_localize_script( 'send-invitation-ajax-handle', 'send_invitation_ajax_script', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); // Dodaj skrypt do wyświetlania i ukrywania formularza w nagłówku wp_enqueue_script( 'send-invitation-js', plugins_url( 'js/send-invitation.js', __FILE__ ), array( 'jquery' ) ); // Dodaj CSS stylizujący formularz do nagłówka wp_enqueue_style( 'send-invitation', plugins_url( 'css/send-invitation.css', __FILE__) ); } funkcja publiczna send_invitation_check_wordpress_version() { globalna $wp_version; $exit_msg = 'Wyślij zaproszenie wymaga wersji ' . SEND_INVITATION_MIN_WORDPRESS_VERSION . 'lub nowszy Proszę zaktualizować!'; if ( version_compare( $wp_version, SEND_INVITATION_MIN_WORDPRESS_VERSION, '<')) { exit( $exit_msg ); } } public function send_invitation_get_form($post_url) { // DO ZROBIENIA Spróbuj przenieść to do innego pliku i dołącz tutaj za pomocą powyższej metody $send_invitation_form ='
Wyślij zaproszenie
 <form id="invitation-form" action="" method="post">
 Twój adres e-mail
 <input type="text" name="your_email" / >

 Adres e-mail odbiorcy
 <input type="text" name="friends_email" />

 Temat
 <input type="text" name ="temat" />

 Wiadomość
 <textarea rows="10" cols="20" name="message">' . $post_url . '</textarea>
 <input type="hidden" name="nonce" value="send_invitation" /> <input type="hidden" name="action" value="form_action" />
 <input id="przycisk wyślij" type="prześlij" value="Wyślij" onclick="send_invitation();" />
 </form>

'; echo $send_invitation_form; } funkcja publiczna send_invitation_handle_submit() { $success = __('OK'); $błąd = __('NIE OK'); if (!empty($_POST)) { spróbuj { error_log('Inside if', 0); $to = $_POST['friends_email']; $temat = $_POST['temat']; $wiadomość = $_POST['wiadomość']; // TODO Pomiń komunikat o błędzie za pomocą @ $send_result = wp_mail($to, $subject, $message); $feedback = $send_result ? $sukces : $błąd; } catch( Wyjątek $e ) { $feedback = "Catch: " . $e->getMessage(); } } else { $feedback = "Błąd: " . $błąd; } echo $feedback; Wyjście; // Nie zapomnij wyjść } ?> Odpowiedni kod javascript jest tutaj: function send_invitation() { alert("tutaj"); jQuery.post(send_invitation_ajax_script.ajaxurl, jQuery('#invitation-form').serialize(), function(response) { alert('Response: ' + response); jQuery('.response-area .success').html (odpowiedź);             }         ); } Innym problemem, który widzę jest to, że żądanie POST do ajaxurl wyświetla się na czerwono w firebugu, ale szybko znika i nie widzę co się dzieje, ale działają prawidłowe funkcje PHP, ale nie pojawia się odpowiedź, a jedyne co otrzymuję to jednokrotne ponowne załadowanie strony żądanie jest wysyłane. Nie jestem pewien, dlaczego tak jest, ale przez jakiś czas próbowałem debugować to i nie mogłem znaleźć rozwiązania. Z góry dziękuję. nawigacja


title: Jak dodać tagi Open Graph?

text: Używam CMS Wordpress. Nie mam dostępu do kodu motywu itp. Jak więc zaktualizować tagi wykresu opeh? Zależy mi głównie na dodaniu obrazu, który będzie do niego pasował, ponieważ używa domyślnego obrazu WordPress podczas udostępniania na Facebooku. Dziękuję!


title: Rebloguj z Tumblra na Wordpress

text: Jeśli masz bloga Tumblr, możesz „reblogować” z innych blogów Tumblr, podobnie jak trackback. Śledzę kilka blogów Tumblr i czasami chcę cytować z tych stron. A na tych stronach Tumblr znajduje się sekcja „notatek” dla każdego posta z listą każdego „rebloga”. Więc moje pytanie brzmi: czy istnieje jakaś wtyczka WordPress (lub jakieś obejście niewymagające wtyczki), która pozwoli mi „reblogować” z witryny Tumblr na moją WordPress i wyświetlić ją w sekcji „notatki” na blogu Tumblr ? Moja strona jest blogiem wordpress.org, jeśli to robi różnicę. I używam WordPressa 3.0.1. Z góry dziękuję!


title: Tworzenie nowej strony z predefiniowaną stroną nadrzędną

text: Mam bloga o bardzo złożonej strukturze stron (np. 4 poziomy hierarchii). Przy tworzeniu nowych stron bardzo kłopotliwe jest wybieranie strony nadrzędnej z listy rozwijanej, ponieważ stale rośnie. Z tego powodu chciałbym dodać przycisk do panelu administracyjnego frontendu, który wskazuje na `post-new.php`, ale z parametrem "identyfikator strony nadrzędnej". W efekcie przycisk umożliwiłby przejście do żądanej strony nadrzędnej na stronie głównej, a następnie kliknięcie linku „dodaj tutaj nową stronę”, który przeniesie Cię na zaplecze z wybraną wstępnie stroną nadrzędną. Wydaje się jednak, że niemożliwe jest dodanie parametrów do pliku `post-new.php`, a powiązane żądanie funkcji zostało zamknięte w ścieżce WordPressa. Czy ktoś zna rozwiązanie, które nie wymaga hackowania rdzenia? Jednym z pomysłów, jaki miałem, było podpięcie się do zaczepu, który jest uruchamiany przed utworzeniem nowego elementu, przeciągnięcie strony nadrzędnej z parametru GET tam i ustawienie jej w elemencie, który ma być. Jeśli jest to opłacalny sposób, byłbym wdzięczny za prosty wskaźnik, którego można użyć.


title: Jak możemy wybrać załączniki na podstawie podpisu?

text: Próbuję wybrać załączniki na podstawie podpisu załącznika. Muszę to zrobić dla osobnej strony pobierania. Na stronie pobierania chcę wyświetlić wszystkie załączniki, których podpis oznacza "pobrania". W ten sposób mogę wybierać załączniki do postów, które można i nie można pobrać W tej chwili mam ten kod, aby wybrać wszystkie załączone pliki pdf jako pliki do pobrania, ale lubię wybrać załączone obrazy i odznaczyć niektóre pdfy. $args = array('post_parent' => $atts['product_id'], 'post_status' => 'dziedzicz', 'post_type' => 'attachment', 'post_mime_type' => 'application/pdf', 'order' => $zamówienie, 'zamówienie' => $zamówienie); $załączniki = get_posts($args); //print_r($załączniki); $i = 1; foreach ($attachments as $attachment) { ... $attachment->guid jestem również w stanie wybrać obrazy na podstawie podanej tam nazwy miniatury z wp_get_attachment_image($attachment->ID,'product-slider-thumbnail'), ale jak to zrobić wybrać na podstawie podpisu? pozdrowienia


title: wp_insert_post i title nie są wstawiane w utf8 z pustym tytułem?

text: Używam `wp_insert_post` Zapętlam plik tekstowy po jednym wierszu i dla każdego wiersza tworzę post. Tekst jest ustawiony jako `post_title', dla tekstu, który nie jest utf8 wstawia post, ale z pustym tytułem. Dlaczego tak się dzieje, jeśli jestem w stanie utworzyć post w panelu administracyjnym za pomocą znaków innych niż utf8, wygląda na to, że WordPress konwertuje kodowanie w zapleczu. Jak mogę to ominąć za pomocą `wp_insert_post` i wstawić tytuł posta ze znakami innymi niż utf8? Dziękuję


title: Wyciągnąć meta posta za pomocą post_query?

text: Tworzę niestandardową pętlę indeksu, która w tej chwili używa tylko query_posts. Problem polega na tym, że w pętli The Loop muszę następnie zapytać o metadane postu (za pomocą get_post_meta), które, jak sądzę, muszą wysyłać zapytania do bazy danych za każdym razem, gdy jest wywoływana. Czy jest jakiś sposób na ściągnięcie metadanych za pomocą query_posts? Potrzebowałbym większości, jeśli nie wszystkich metadanych przechowywanych dla każdego postu. Dzięki Max


title: Przekierowanie Wordpress, aby uzyskać przyjazny adres URL

text: Chcę, aby adres URL był przyjazny dla przekazywania danych do strony z innej strony. Wyjaśniam : mam na klasycznej stronie wordpress, url jak to : ( example.com/agent/name_agent ) jest to url budowany dynamicznie. ( get_permalink($id_page_agent) . $name_agent ) W moim loop-agent.php , mogę zarządzać $_GET['agent_name'], aby utworzyć filtr. Muszę zbudować przekierowanie example.com/agent/name_agent > example.com/agent/?agent_name=name_agent Nie wiem czy rozumiesz ?


title: Wyszukaj/zamień edytor w trybie HTML

text: Czy istnieje sposób na wykonanie wyszukiwania i zamiany dla edytora w trybie HTML? Wtyczki, które znalazłem, są przeznaczone dla edytora wizualnego, pracujemy **tylko** w trybie HTML-, dlatego -nie- odpowiednie do tego, co robimy. Byłbym wdzięczny za znalezienie fragmentu kodu lub wtyczki do trybu HTML (czy przegapiłem tę, którą znalazłeś?) Z góry dziękuję za czas i wysiłek.


title: query_posts nie porządkuje według tytułu

text: Wydaje się, że to głupi błąd, ale jak mogę zamówić według tytułu? W każdym razie zamówienia według daty! Używam: query_posts( array( 'post_type' => 'page', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC') ); Chcę użyć tego w funkcji jako SHORTCODE. To, co staram się osiągnąć, to stworzenie mapy strony / indeksu wszystkich wpisów w kolejności alfabetycznej. Używam też najnowszego WP.


title: Jaki jest najłatwiejszy sposób na zaimplementowanie kaskadowej aktualizacji bazy danych dla mojej wtyczki?

text: **Załóżmy następującą sytuację:** Opracowuję wtyczkę. Wtyczka wymaga niestandardowej tabeli bazy danych do przechowywania pewnych informacji. Z miesiąca na miesiąc wypuszczam nowe wersje mojej wtyczki. Różne wersje mogą mieć własne zestawy zmian struktury tabeli i danych tabeli. Na przykład: * _wersja 1.0.0_ ma początkową konfigurację struktury tabeli * _wersja 1.1.0_ zawiera zmiany w jednym typie kolumny i wymaga wykonania operacji aktualizacji na danych z tej kolumny * _wersja 2.0.0_ wymaga utworzenia dwóch nowych kolumn, dzieląc dane ze starej kolumny do nowych kolumn i usunięcie starej/przestarzałej kolumny **Problem:** Rozważmy dwa przypadki użycia: 1. Użytkownik pobrał wersję 1.0.0, pominął aktualizację do wersji 1.1.0 i zdecydował się zaktualizować wtyczkę, gdy została wydana wersja 2.0.0. Jak zorganizować proces aktualizacji bazy danych, która obsłuży aktualizację z wersji 1.0.0 do wersji 2.0.0 wraz ze zmianami z wersji 1.1.0? 2. Użytkownik pobrał wersję 2.0.0 i zainstalował ją na pustej instancji WordPressa. Jak wykonać najnowszą wersję instalacji bazy danych, która będzie zawierała wszystkie zmiany ze wszystkich wersji zgodnych z zasadami DRY?


title: Jak zrobić stronę z wieloma aktywnymi szablonami

text: Chcę stworzyć stronę internetową z silnikiem wordpress, ale z pewnymi funkcjami. Jedna witryna ma 3 szablony, a każdy szablon jest aktywny, ponieważ chcę stworzyć 1 witrynę z 3 podkategoriami, takimi jak blog, portfolio i galeria zdjęć, ale z różnymi szablonami i dopasowaniem w każdej podkategorii. Czy ktoś wie, jak to zrobić, proszę? Z góry bardzo dziękuję.


title: Błąd połączenia Wp-Admin FTPS w przeciwieństwie do Filezilli

text: Moja witryna wordpress została właśnie przeniesiona z FTP na protokół FTPS. Kiedy próbowałem nawiązać połączenie z FileZilla, połączenie się powiodło. Nie ma nic złego w moim połączeniu FTPS. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/Y4emW.png) Status: Łączenie z 88.247.100.147:16666... Odpowiedź: fzSftp uruchomione Polecenie: otwórz "sonergonul@88.247.100.147" 16666 Polecenie: Ufaj nowemu kluczowi hosta: Tak Polecenie: Hasło: ************** Status: Połączono z 88.247.100.147 Status: Pobieranie listy katalogów... Polecenie: pwd Odpowiedź: Bieżący katalog to: "/home/sonergonul" Polecenie: ls Status: Wyświetlanie katalogu /home/sonergonul Status: Obliczanie przesunięcia strefy czasowej serwera... Polecenie: mtime "sonergonul_net" Odpowiedź: 1326036705 Status: Przesunięcia strefy czasowej: Serwer: 7200 sekund. Lokalnie: 10800 sekund. Różnica: 3600 sekund. Status: Lista katalogów powiodła się Ale w moim wp-admin, kiedy próbowałem zaktualizować moją wersję wordpress auto, te informacje nie są akceptowane. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/fZUxO.jpg) Kod błędu oznacza: > Wystąpił problem z połączeniem z serwerem, sprawdź połączenie > ustawienia. Moje wszystkie pliki pod `88.247.100.147:16666/home/sonergonul/sonergonul_net`. Wszyscy próbowali połączyć wszystkie możliwości w nazwie mojego serwera (88.247.100.147, 88.247.100.147:16666, sonergonul.net), ale nikt nie został zaakceptowany. Myślę, że przegapiłem jakiś punkt, ale nie mogłem go znaleźć. Czy ktoś ma pomysł na taką sytuację?


title: Dlaczego czas odpowiedzi serwera spowalnia moją witrynę?

text: Moja strona to www.phoenixwave.com Kiedy używam testu prędkości Pingdom i testu prędkości Google, oba te testy dają mi wniosek, że czas odpowiedzi mojego serwera jest śmiesznie wolny... Używam serwera Rackspace. Po prostu próbuję uzyskać ogólny kierunek, w którym muszę rozpocząć rozwiązywanie problemów. Czy powinienem zajrzeć do innego hostingu? Czy mam problem z serwerem lub problem z DNS? Dzięki za wszelką pomoc udzieloną przez społeczność. Zobacz zdjęcie wynikowe z Pingdom poniżej: ![Test Pingdom of Phoenixwave.com](http://i.stack.imgur.com/oJry6.jpg)


title: Dodawanie niestandardowych pól do obrazów

text: Chcę pokazać źródła pod każdym moim obrazem. Więc w zasadzie chcę dodać proste pole niestandardowe. Dodałem ten kod do mojego function.php add_filter('attachment_fields_to_edit', 'edit_media_custom_field', 11, 2 ); add_filter('attachment_fields_to_save', 'save_media_custom_field', 11, 2 ); function edit_media_custom_field( $form_fields, $post ) { $form_fields['custom_field'] = array( 'label' => 'Pole niestandardowe', 'input' => 'text', 'value' => get_post_meta( $post-> identyfikator, '_custom_field', prawda ) ); zwróć $form_fields; } function save_media_custom_field( $post, $attachment ) { update_post_meta( $post['ID'], '_custom_field', $attachment['custom_field'] ); return $post; } Jak dotąd jest ok. Ale potem robi się bałagan. Teraz mój problem polega na tym, że mogę dodać ten drugi kod wywołujący, chodziło mi o to, który .php get_post_meta(get_the_ID(), '_custom_field', true) );


title: Dziennik debugowania Wordpressa nie działa

text: Wypróbowałem wszystkie zalecenia z tego miejsca, ale żadne nie rozwiązuje mojego problemu. Mam kilka instalacji wordpressa na lokalnym komputerze z Win 7 i wampem 2.4 i żadna z nich nie zapisuje w pliku debug.log ani nawet nie wyświetla błędów na stronie. Ustawiłem następujące w wp-config.php: define('WP_DEBUG', true); define('WP_DEBUG_LOG', prawda); define('WP_DEBUG_DISPLAY', fałsz); Ręcznie utworzyłem pusty plik o nazwie debug.log w katalogu wp-content z pełnymi uprawnieniami dla wszystkich. Moje ustawienia php.ini to: error_reporting = E_ALL display_errors = Włączone display_startup_errors = Włączone log_errors = włączone log_errors_max_len = 1024 ignore_repeated_errors = Wyłączone track_errors = Włączone html_errors = Włączone error_log = "C:/wamp/logs/php_error.log" Jedyny sposób na debugowanie jest użycie jednej z dostępnych wtyczek, ale są one bezużyteczne, gdy pojawia się biały ekran.


title: Niestandardowa strona typu postu dla autorów

text: Mam ponad 30 użytkowników i kilka niestandardowych typów postów. * Zajęcia * Pobieranie * Imprezy * Wydarzenia * itp W tej chwili używam `author.php` aby wyświetlić wszystkie te niestandardowe posty dla **tego** użytkownika, każdy wpis w pętli, każdy ukryty w formacie tabulatora . `http://www.websites.com/members/steve` Zostałem zapytany, czy istnieje sposób na umieszczenie każdego typu posta pod adresem URL `http://www.websites.com/members/steve/classes` `http://www.websites.com/members/jean/parties` `http://www.websites.com/members/peter/events` Czy można to zrobić?


title: Rejestrowanie metod klasy jako wywołań zwrotnych przechwytujących

text: Nie jestem pewien, czy zrobiłem to poprawnie. Jak rozumiem: jeśli mam klasę foo i statyczny pasek metod, mogę zarejestrować to jako wywołanie zwrotne, przekazując tablicę `array("foo","bar")` jako nazwę funkcji. Jeśli mam instancję klasy w $foo i chcę wywołać pasek metody, przekazuję tablicę `array($foo,'bar')`. Jeśli muszę zarejestrować akcję wewnątrz samej klasy, czy będzie działać z `array($this,'bar')`?


title: Dynamicznie twórz terminy w taksonomii po opublikowaniu niestandardowego typu postu. Prawie na miejscu!

text: Próbuję automatycznie tworzyć terminy w określonej taksonomii po opublikowaniu określonego niestandardowego typu postu. Nowo utworzony termin musi być nazwą opublikowanego posta. Przykład: mam niestandardowy typ wpisu „country” i niestandardową taksonomię „country_taxo”. Kiedy publikuję kraj, powiedz „Kenia”, chcę, aby termin „Kenia” był automatycznie tworzony w ramach taksonomii „country_taxo”. Osiągnąłem to za pomocą haka akcji „publish_(custom_post_type)”, ale mogę go uruchomić tylko statycznie. Przykład: // ten fragment kodu dodaje termin „Kenia” do taksonomii „country_taxo” za każdym razem, // publikowania niestandardowego typu wpisu krajowego. add_action('publish_country', 'add_country_term'); funkcja add_country_term() { wp_insert_term( 'Keyna', 'country_taxo'); } Jak wspomniałem powyżej, potrzebuję tego, aby dynamicznie dodać tytuł posta jako termin. Próbowałem tego, ale to nie działa: add_action('publish_country', 'add_country_term'); funkcja add_country_term($post_ID) { global $wpdb; $country_post_name = $post->post_name; wp_insert_term( $country_post_name, 'country_taxo'); } Czy ktoś wie, jak bym to zrobił? Każda pomoc jest bardzo ceniona.


title: Jak mogę zapytać o wszystkie wartości niestandardowych taksonomii?

text: Załóżmy, że mam niestandardową taksonomię „Owoce”. Chcę zapytać o wszystkie dostępne wartości, np. Pomarańcze, jabłka, mango itp. Jak mogę to zrobić?