title: Usuń błąd podawania strony menu

text: Mam fragment kodu, który napisałem w pliku functions.php, który ma po prostu usunąć strony menu, jeśli użytkownik nie może aktywować wtyczek. Działa zgodnie z przeznaczeniem; jednak pokazuje błąd PHP w obszarze administracyjnym tylko wtedy, gdy zalogowany użytkownik jest administratorem. Oto fragment kodu: <?php /************* Usuń elementy menu administratora od każdego, kto nie jest administratorem ************/ if (!current_user_can ('activate_plugins')) { function my_remove_menu_pages() { remove_menu_page('link-manager.php'); remove_menu_page('tools.php'); remove_menu_page('edit-comments.php'); } }; add_action( 'admin_menu', 'my_remove_menu_pages' ); ?> Oto błąd: Ostrzeżenie: call_user_func_array() oczekuje, że parametr 1 będzie prawidłowym wywołaniem zwrotnym, funkcja „my_remove_menu_pages” nie została znaleziona lub nieprawidłowa nazwa funkcji w /var/www/vhosts/mydomain.com/httpdocs/wp-includes/plugin. php w wierszu 406 Próbowałem przepisać fragment na kilka różnych sposobów i za każdym razem robi to w zasadzie to samo. Działa zgodnie z przeznaczeniem, usuwając strony menu administratora dla mniej niż administratorów, ale daje ten sam błąd w backendzie WP po zalogowaniu się jako administrator. Jakieś sugestie lub przemyślenia na ten temat?


title: Widelce WordPress

text: Czy istnieją jakieś widelce WordPressa? Opcjonalne tematy podrzędne: * Dlaczego się rozwidlili? Różne cele projektowe? (np. HTML5 zamiast domyślnej składni XHTML) * Od jakiej wersji/czasu odeszli od bazy kodu WP? * Czy ponownie wykorzystuje kod innych projektów? * Czy jest to aktywny widelec, czy wycofany/nieaktualny? Sam WP wywodzi się z b2/cafelog. Sądzę więc, że widelce mają więcej zalet. Ale oczywiście zależy to od celów funkcjonalnych, jeśli jest to długowieczny projekt pochodny. Poza prawdziwymi forkami, być może wzbogacone wtyczkami (lub intensywnie "zmodyfikowane") dystrybucje WP są również na temat. I to głównie po to, by zobaczyć, jakie istnieją wybory lub gdzie może pójść rozwój.


title: Niestandardowa paginacja post-type nie działa w category.php

text:
Mam ten kod do pliku category.php : <?php get_header(); ?>

 <?php $moje_zapytanie = null; $stronicowany = (get_query_var('stronicowany')) ? get_query_var('stronicowane') : 1; $my_query = new WP_Query(array('post_type'=>array('post','articulo'), 'paged' => $paged, 'category_name'=>single_cat_title('', false), 'posts_per_page' => 10)); if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); if ($my_query->post->post_type == 'post') {?>

<a href="<?php the_permalink() ?>"> <?php the_post_thumbnail( 'thumbnail', $attr ); ?>

 <?php foreach((get_the_category()) as $category) { echo '
nazwa_kota. '">term_id ).'">' . $kategoria->nazwa_kota . '
';}?>
 <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>">
< ?php tytuł_(); ?>

Spis na <?php the_author_posts_link(); ?> el <?php the_time('d/m/Y') ?> a las <?php the_time('G:i'); ?>

<?php comments_number('0 komentarzy', '1 komentarzy', '% komentarzy' );?>

 <?php the_excerpt( ) ?>
<a href="<?php the_permalink() ?>">Kontynuuj

 <?php } if ($my_query->post->post_type == 'articulo') {?>

<a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>">
<?php the_title(); ?>

 Escrito przez <?php the_author_posts_link(); ?> el <?php the_time('d/m/Y') ?> a las <?php the_time('G:i'); ?>
<?php comments_number('0 komentarzy', '1 komentarzy', '% komentarzy' );?>

 <?php the_content(false); ?>
<a href="<?php the_permalink() ?>">Kontynuuj

 <?php } inny; endwhile;?>

<?php previous_posts_link( __( 'Poprzedni') ); ?>

<?php next_posts_link( __( 'Siguiente') ); ?>

 <?php endif; ?> <?php get_sidebar(); pobierz_stopkę(); ?> Ale paginacja nie działa w kategoriach, w których są tylko niestandardowe posty


title: Czy można zahaczyć/filtrować tworzenie załączników?

text: Czy można podpiąć lub przefiltrować proces tworzenia załącznika? Mówiąc dokładniej, czy możliwe jest podpięcie się pod tworzenie załącznika, abym mógł przeanalizować nazwę pliku załącznika, wypełnić metadane załącznika (tytuł) przefiltrowaną wersją jego nazwy pliku? Jeśli nie, czy są planowane podpięcia i filtry dla biblioteki multimediów z przyszłymi aktualizacjami rdzenia?


title: Żądanie Ajax wtyczki nie działa w trybie wielostanowiskowym

text: Skonfigurowałem multisite w wordpressie dla klienta i opracowałem wtyczkę, która już działała dobrze w pojedynczej instalacji wp. Dałem opcję dostosowania wtyczki do wszystkich użytkowników mutltisite zgodnie z tamtym wymogiem. **Prawda jest taka, że nie wiem, czy to działa, czy nie.** Kiedy klikam przycisk Zapisz ustawienia, wszystkie ustawienia są zapisywane przez połączenie ajax. Ale w multisite to nie działa. Powiedzmy, że mam superadministratora na `http://example.com` i użytkownika `http://example.com/user_1` (ma tę samą wtyczkę) oraz `http://example.com/user2 ` (ma tę samą wtyczkę). Różne ustawienia dla różnych użytkowników. Ale zapisuję ustawienia z `http://example.com/user_1`, a następnie żądanie ajax wchodząc do `http://example.com/user_1/wp-admin/admin-ajax.php` i zwracam 0. Oto kod: $.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: {action: 'form_ppl_settings', data: $ (this).serialize()}, beforeSend: function(){ $('input[name="submit"]').prop('disabled', true).next('span').show(); } , sukces: function(odpowiedź){ $('input[name="submit"]').prop('wyłączone', false).next('span').hide(); } }); a kod PHP to: public function form_ppl_settings_callback() { $post = $this->str2array($_POST['data']); if( ! wp_verify_nonce($post['om_gr_settings_nonce'], "om_gr_settings_field") ) { return "Żądanie Ajax niepoprawne!"; } print_r($_POST['dane']); update_option("_gf_settings", $post); echo json_encode($post); matryca(0); } Pomóż mi poprowadzić mnie na właściwą drogę. Czy ustawienia niestandardowe indywidualnie we wtyczce działają w wordpressie w wielu witrynach?


title: WYSIWYG na niestandardowych metaboxach przy wyłączeniu głównego edytora?

text: Pracuję nad tworzeniem niestandardowego typu zawartości, ale mam problem z formatowaniem widoków tworzenia i edycji. Chcę wyłączyć główny edytor i skupić się tylko na tytule, fragmencie i polach niestandardowych. Mam następujący kod jQuery, który doda WYSIWYG do moich pól niestandardowych i działa dobrze: <script type="text/javascript"> /* <![CDATA[ */ jQuery(document).ready(function()) { if ( typeof( tinyMCE ) == "obiekt" && typeof( tinyMCE.execCommand ) == "funkcja" ) { tinyMCE.execCommand("mceAddControl", true, "solution_problem"); tinyMCE.execCommand("mceAddControl", true , "solution_solution"); tinyMCE.execCommand("mceAddControl", true, "solution_people"); } }); /* ]]> */ </script> Ale kiedy usunę edytor z argumentu 'supports' w *register_post_type*: 'supports' => array('title','thumbnail','excerpt'), ' taxonomies' => array('category', 'post_tag') Domyślny edytor zniknie, ale znikną również moje niestandardowe WYSIWYG. Czy ktoś ma pojęcie, dlaczego tak się dzieje? Dziękuję!


title: Tworzenie innego paska bocznego dla pojedynczych postów niż dla strony głównej.

text:
Jak mogę utworzyć inny pasek boczny dla pojedynczych postów niż dla strony głównej? W tej chwili mam 2 działające jeden dla stron i jeden dla bloga dzięki tak to wygląda w funtions.php // Zarejestruj paski boczne register_sidebar(array('name' => 'Sidebar Blog','id' => 'sidebar -blog')); register_sidebar(array('name' => 'Strony paska bocznego','id' => 'strony-paska bocznego')); register_sidebar(array('name' => 'Footer','id' => 'sidebar-footer')); // Zarejestruj menu register_nav_menu( 'top_navi', 'Nawigacja z góry' ); register_nav_menu( 'main_navi', 'Główna nawigacja' ); tak to wygląda w sidebar.php

 <?php if(is_page() && is_active_sidebar('strony-paska-bocznego')) : dynamic_sidebar('strony-paska-bocznego'); elseif(is_active_sidebar('sidebar-blog')) : dynamic_sidebar('sidebar-blog'); else : ?> <?php wp_list_categories('title_li=
Kategorie
'); ?> <?php wp_list_pages('title_li=
Strony
'); ?>

Archiwa

 <?php wp_get_archives(); ?>

 <?php wp_list_bookmarks(); ?> <?php endif; ?>

 Dzięki!


title: Nieprawidłowy pasek boczny wyświetlany na stronie sklepu WooCommerce

text: Opracowuję odświeżenie mojej witryny na nowym planie VPS, a jedną z głównych zmian jest przejście z przerażającego wp e-commerce na WooCommerce. Adres URL strony sklepu WooCommerce to `http://95.142.166.209/shop/` [Na razie uzyskuję dostęp do witryny za pośrednictwem adresu IP VPS, ponieważ moja domena jest używana w aktywnej witrynie — StackExchange nie zezwala na adres IP Adresy URL, więc musisz skopiować i wkleić adres IP do paska adresu (przepraszam)] Nadal jestem w trakcie tworzenia stylów i szablonów, ale nie mogę rozgryźć paska bocznego. Mój motyw WordPress ma 2 paski boczne zdefiniowane w pliku functions.php: „pasek boczny bloga” i „pasek boczny sklepu”. Z jakiegoś powodu jedynym paskiem bocznym, który mogę wyświetlić na stronie sklepu, jest pasek boczny bloga, który ma (co zaskakujące) pokazywać tylko na blogu. Próbowałem stworzyć szablon dla sklepu i wstawiłem funkcję `get_sidebar()`, odwołującą się do identyfikatora paska bocznego sklepu w procesie, ale bez radości. Jestem przekonany, że WooCommerce powinien zarejestrować własny pasek boczny po zainstalowaniu, ale nie ma tego śladu w backendzie WP w obszarze wygląd-> widżety. Przeszukałem pliki motywów WooCommerce, ale jedyną rzeczą związaną z paskiem bocznym, jaką mogę znaleźć, jest plik php zawierający `get_sidebar('shop')`, który jest oczywiście zawarty w innych plikach motywów. Nigdzie nie ma śladu po zarejestrowaniu paska bocznego z identyfikatorem „sklep”. Masz pomysł, jak mogę wyświetlić prawidłowy pasek boczny na stronach sklepu? Dzięki Widzę, że moje pytanie zostało kilka razy przegłosowane – przepraszam, jeśli jest niejasne, ale jest to prawdziwe pytanie. Jeśli cokolwiek wymaga wyjaśnienia, pomogłoby, jeśli zostawiłeś komentarz, a nie tylko odrzucenie.


title: Motyw strony niestandardowe

text: Pracuję nad plikiem function.php dla nowego systemu motywów. Muszę wiedzieć, jak zrobić niestandardowy szablon wykonywalny za pomocą adresu URL. Więc jeśli ktoś miałby wejść na `http://website.com/my-custom-template/` jak mogę sprawić, by strona ładująca się czytała z szablonu `my-custom-template.php` w folderze motywów ?


title: $wpdb->update zakończył zapisywanie wyzwalacza?

text: Mam niestandardową tabelę, którą aktualizuję za pomocą akcji wp_ajax. Wstawiam wiersz i wstawiam wszystkie wartości inne niż `id`, który jest `AUTO_INCREMENT`. Mam odpowiedź ajax, która tworzy nowy wiersz na stronie z nowymi danymi. W mojej odpowiedzi muszę sprawdzić, czy wiersz został dodany, a następnie wyświetlić rekord. Mogę oczywiście wydrukować wszystko poza "id" ze zmiennymi, które wcześniej zdefiniowałem, ale chcę również uzyskać dynamicznie utworzoną cyfrę! Pomoc! Potrzebuję instrukcji `if`, aby zobaczyć, kiedy wiersz się zakończył. Kłopot jest tutaj w moim php, a konkretnie uzyskanie `$carrier_id`: <?php add_action('wp_ajax_change_carrier', 'carrier_change_callback'); funkcja carrier_change_callback () { global $ wpdb; //Nowy przewoźnik if ($_POST['newCarrier']){ $wpdb->insert( $wpdb->prefix.'bf_carriers', array( 'name' => stripslashes($_POST['newName']), ' label' => $_POST['newLabel'], 'service_center_path' => $_POST['newHtm'], 'image_name' => $_POST['newImage'] ) ); //ustaw zmienne tak, aby zwracały nowy wiersz tabeli $carrier_name = stripslashes($_POST['newName']); $carrier_image = $_POST['nowyObraz']; $carrier_label = $_POST['nowaEtykieta']; $carrier_htm = $_POST['nowyHtm']; $carrier_id = $wpdb->get_row("SELECT id FROM $wpdb->prefix.'bf_carriers' WHERE image_name = $carrier_image"); ?> <tr> <!-- Dużo śmieci dzieje się tutaj, aby wyświetlić powyższe zmienne i zwrócić odpowiedź na moje wywołanie ajax --> </tr> <?php die(); } }


title: W każdym razie, aby mapy Google wyświetlały wiele ORAZ unikalnych lokalizacji na poszczególne posty/strony?

text: Najtrudniej znaleźć rozwiązanie dużego problemu. Jak dotąd nie mogę znaleźć żadnych wtyczek, które są w stanie to zrobić. Mam witrynę, w której każdy post musi mieć własną mapę Google, która pobiera z listy lokalizacji, które są unikalne dla TEJ mapy wyświetlanej w TYM poście i wyświetla sklepy, które znajdują się wokół wpisanego kodu pocztowego lub adresu, który sprzedaje wyświetlany element w tym poście. Kłopot polega na tym, że nie mogę znaleźć żadnego rozwiązania, które pozwoliłoby mi mieć inną mapę, z inną bazą danych lokalizacji wpisanych w poście lub na stronie. Mogę znaleźć tylko wtyczki, które pozwalają mi mieć tylko JEDNĄ centralną bazę danych, a następnie użyć shortcode do wstawienia do posta/strony. Gdzie mogę znaleźć rozwiązanie tego problemu? Czy musi być opracowany na zamówienie, jeśli tak, od czego mam zacząć? Ponadto mój motyw jest gotowy na urządzenia mobilne, a bycie gotowym na urządzenia mobilne jest bardzo ważne. Jest bardzo korzystne, aby jakiekolwiek rozwiązanie, którego używam lub kompiluję, działało z moim gotowym motywem mobilnym i wyświetlało się poprawnie również na urządzeniach mobilnych, jeśli to możliwe. Z góry dziękuję za wszystko! :)


title: Uzyskać taksonomię dla niestandardowego typu postu według identyfikatora posta i uporządkować według taksonomii?

text: Zrobiłem niestandardowy typ postu, a teraz dodaję taksonomię o nazwie miejsca. Lubię używać tylko jednej kategorii miejsc i wyświetlać niestandardowe typy postów w kolejności alfabetycznej. zarejestrowałem funkcję taksonomii create_mycpt_tax() { register_taxonomy( 'place', 'mycpt', array(...... 1/ próbując wyświetlić taksonomię za pomocą $ppr_place = get_the_terms($id, 'place'); i print_r($ppr_place); daje Array ( [5] => stdClass Object ( [term_id] => 5 [name] => Berlin [slug] => berlin [term_group] => 0 [term_taxonomy_id] => 5 [taksonomia] => place [description] => [parent] => 0 [count] => 2 [object_id] => 125 [filter] => raw ) ) Ale nie otrzymuję $ppr_place->name za $post- >id?A może lepiej dodać inne niestandardowe pole o nazwie miejsce i jak wykorzystać to pole do zamówienia? d wyświetlić niestandardowe typy postów? W tym podejściu próbuję $args = array( 'post_type' => 'mycpt', 'meta_key'=>'place', 'orderby'=>'meta_value_num', 'order' => 'ASC' ); $wyniki = nowe WP_Query($args); Jakich wartości mogę użyć do zamówienia? pozdrowienia


title: Niestandardowy typ posta Archive.php

text: Mam niestandardowy typ postu o nazwie 'camps', a tam mam różne kategorie, np. Derbyshire, Staffordshire itp. Stworzyłem w tym celu szablon archive-camps.php. archive-camps.php działa dobrze, gdy wchodzimy na www.domain.com/camps, ale jeśli wejdziemy na www.domain.com/camps/derbyshire, używa domyślnego archive.php Dlaczego to robi?


title: Shortcode OOP i WordPress

text: Próbowałem w ten sposób dodać krótki kod class MyPlugin { function __construct() { $this->make_shortcode(); } function ShowMsg($cls, $lst4) { $data = shortcode_atts(array('phn' => '', 'msg' => ''), $atts); return 'Wysłałeś '.$data['msg '] .' z '.$dane['phn'] ; } function make_shortcode() { add_shortcode('ShowMsg', 'ShowMsg'); } } nowa MyPlugin; A `[ShowMsg phn="123456" msg="Test Message"]` nie działa, zwraca pełny shortcode zamiast żądanego tekstu. Potrzebuję twojej rady, żeby to naprawić.


title: Jak mogę określić, jakie pliki php są wywoływane przez daną stronę WP?

text: Chciałbym debugować niektóre funkcje WordPressa, ale aby to zrobić, muszę wiedzieć, gdzie znaleźć plik php, który jest wykonywany na danej stronie. Jak ustawić coś, co powie mi, jakie pliki php (lub funkcje, obiekty) są wywoływane w celu wygenerowania danej strony? Używam absurdalnej ilości wtyczek i mam skomplikowaną strukturę motywów, więc nie jest praktyczne wstawianie komunikatów debugowania do każdego pliku php, który mam, jak sugeruje odpowiedź na to pytanie.


title: Sortowanie postów według wielu pól niestandardowych w określonej kolejności

text: Obecnie sortuję niektóre posty według pól niestandardowych 'role' i 'nazwisko', używając następujących: function customorder($orderby) { return 'mt1.meta_value DESC, mt2.meta_value ASC'; } $args = array( 'post_type' => 'staff', 'meta_key' => 'role', 'meta_query' => array( array( 'key' => 'role' ), array( 'key' => 'nazwisko',             ),         )     ); add_filter('posts_orderby','customorder'); $zapytanie = nowe WP_Query( $args ); remove_filter('posts_orderby','customorder'); Jak mogę zdefiniować kolejność, w jakiej chciałbym mieć pierwszy meta_klucz, w przeciwieństwie do alfabetycznego malejącego lub rosnącego. Na przykład gdzie role = 'Dyrektor', 'Zastępca', 'Nauczyciel', 'Wsparcie', 'Urzędnik' ... itd. Dlatego grupujemy posty według wartości meta_key. Z góry dziękuję za wszelką pomoc Pozdrawiam Noel


title: Włączenie SSL w wordpressie daje wynik 404

text: Próbuję wymusić logowanie ssl i administrację, ale to nie działa. Próbowałem przejść przez temat isecurity, który nie działał. Następnie spróbowałem zrobić to ręcznie, modyfikując mój plik wp-config.php tak, aby zawierał: define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', prawda); Jednak gdy przechodzę do mysite/wp-admin, otrzymuję: > Żądany adres URL /wp-admin/ nie został znaleziony na tym serwerze. > > Ponadto wystąpił błąd 404 Not Found podczas próby użycia > ErrorDocument do obsługi żądania. Wyjęcie tych dwóch linii przywraca funkcjonalność. Używam najnowszej wersji wordpress i mam domyślną strukturę linków. Dzięki za pomoc!


title: Pobierz aktualny aktywny schemat kolorów wp

text: Czy istnieje sposób na zwrócenie bieżącego aktywnego schematu kolorów? Oto jak zarejestrować nowy schemat kolorów administratora <?php register_admin_color_schemes(); ?> czy jest coś takiego jak `get_admin_color_scheme();` które zwróci które jest aktywne?


title: URL przepisywania taksonomii niestandardowej

text: Jak przekierować adres URL z example.com/taxonomy/taxvalue/?spost=holiday na example.com/index.php?post_type=holiday&taxnomy=taxvalue Kod: function custom_post_rewrite_rules( $rules ) { $newrules = array(); $tax='lokalizacje'; // nazwa Twojej niestandardowej taksonomii query_var name $newrules[$tax.'/(.*)$'] = 'index.php?post_type='.$cpt.'&'.$tax.'=$matches[1]' ; zwróć $nowe zasady + $zasady; } add_filter('rewrite_rules_array','custom_post_rewrite_rules');


title: Wartość ciągu zapytania

text: Jak mogę uzyskać wartość `całkowitą` z następującego adresu URL `http://tradephonein.com/checkout-swap/?total=$18.00&broken=No&water=%20No&power=Yes,%20battery%20included&lcd=No&charger=&manual=Owner% 20Podręcznik&box=&other=` Mam taki rodzaj zapytania łańcuchowego, zobaczysz, że jest `suma=18,00$`, moje pytanie brzmi, jak mogę uzyskać wartość, ponieważ chcę ją odjąć w liczbie.


title: Utworzono niestandardowy typ posta — nie mogę go wyświetlić

text: Stworzyłem niestandardowy typ posta („Portfolio”) i mogę tworzyć posty idealnie. Problem polega na tym, że kiedy idę do obejrzenia przedmiotu, pojawia się błąd 404. Oto element portfolio Oto mój kod rejestrujący niestandardowy typ posta: add_action( 'init', 'create_post_type' ); function create_post_type() { $labels = array( 'name' => __('Portfolio'), 'singular_name' => __('Element portfela'), 'add_new' => __('Dodaj nowy'), 'add_new_item ' => __('Dodaj nowy element portfela'), 'edit_item' => __('Edytuj element portfela'), 'new_item' => __('Nowy element portfela'), 'view_item' => __('Widok Element portfela'), 'search_items' => __('Przeszukaj portfolio'), 'not_found' => __('Nic nie znaleziono'), 'not_found_in_trash' => __('Nic nie znaleziono w Koszu'), 'parent_item_colon' = > '' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'menu_icon' => null, 'rewrite ' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title','editor','thumbnail','excerpt' ,'uwagi')         ); register_post_type( 'portfolio' , $args ); } Brakuje mi czegoś, ale nie wiem czego. Pomoc! Z góry dziękuję :)


title: Jak wymieniać terminy pierwszą literą, jak w A, potem w B itd.

text:
Muszę podzielić zestaw terminów taksonomicznych przez pierwszą literę nazwy terminu. Znalazłem kilka bitów kodu, które mogą pomóc, ale kiedy zaimplementuję mój kod, nie otrzymuję wartości zwracanych. Jestem pewien, że musi to być coś dość małego w moim kodzie, ale po prostu nie mogę tego znaleźć. Ta taksonomia zawiera marki i etykiety prowadzone przez sklepy wymienione na mojej stronie. Tak więc liczba terminów jest dość duża. Niektóre etykiety/marki/terminy zaczynają się od cyfr, inne litery i inne są znakami obcymi, takimi jak rosyjski i mogą być japońskie, arabskie itp. w miarę rozwoju witryny Poniższy kod jest tylko moim pierwszym uruchomieniem, aby pokazać tylko terminy zaczynające się od liter. $letters = array('A','B','C','D','E','F','G','H','I','J','K',' L”, „M”, „N”, „O”, „P”, „Q”, „R”, „S”, „T”, „U”, „V”, „W”, „X” „T”, „Z”); $liczby = tablica(0,1,2,3,4,5,6,7,8,9); $znaki = array_merge( $litery, $liczby ); $args = array( 'orderby' => 'nazwa', 'zamówienie' => 'asc' ); $terms = get_terms( $taksonomia, $args ); if( count($terms) > 0 ): foreach( $terms as $term ): $firstchar = (string) substr( $term->name, 0 ); $pierwszyznak = strtoupper( $pierwszyznak ); $termlink = get_term_link( $term->slug, $taksonomia ); if( in_array($firstchar,$letters) ): ?>

<a href="<?php echo $termlink; ?>" ><?php echo $term->nazwa; ?>

  <?php endif;//to litera endforeach;//$terms jako $term endif;// count>0 Nie jestem pewien, co powoduje, że terminy nie są wyświetlane. Oto link do serwera programistycznego http://obeliskwebdesign.com/sandbox/directorysexy/in-stock-sort/ Dzięki za wszelkie spostrzeżenia lub pomoc. Byłem zakłopotany.


title: Jak wykorzystać funkcję WP switchEditors.switchto(this) JS we własnym skrypcie?

text: Mam motyw przełączania kart, który pozwala użytkownikowi wybrać 3 tryby edycji podczas dodawania nowych stron (HTML i Visual - są to domyślne ustawienia WP i nowy tryb składni przy użyciu Code Mirror). Mam problemy podczas przełączania ze składni z powrotem do HTML i Visual. Wygląda na to, że przełączanie kart jest niestabilne, a edytor nie jest przywracany do normalnego domyślnego zachowania WP. Planuję użyć domyślnej funkcji switchEditors.switchto WP, ale nie wiem, jakie parametry chciałbym do niej podać. Czy ktoś może pokazać mi przykład, jak używać tej funkcji w niestandardowej funkcji JS (jak w motywie?) Dzięki.


title: Zezwolić użytkownikom na usuwanie przesłanych obrazów w zapleczu?

text: Zezwalam użytkownikom na wgrywanie swoich obrazów, więc aby pokazać wgrane obrazy używam `<?php echo $options_images['image_bg'];?>` **co generuje to** :`http://www.mydomain .com/myfolder/wp-content/uploads/2013/05/deleteme.png`. Więc teraz mój obraz jest wyświetlany poprawnie. Teraz chcę pozwolić moim użytkownikom ** usunąć ** ten obraz i to jest miejsce, w którym nie udało mi się żałośnie. Problem: Aby usunąć ten obraz, wiem, że muszę użyć funkcji `unlink()`, ale aby faktycznie z niej skorzystać, muszę **pobrać dynamicznie** _tylko jego katalog (`'wp-content/uploads/2013/05/ deleteme.png';`) part_ **(Popraw mnie, jeśli się mylę).** Więc jakoś _(chyba przynajmniej)_ muszę przeczytać `$options_images['image_bg']`, a następnie **pobrać pozbądź się**`http://www.mojadomena.com/` ** _ale ta ścieżka również może być cokolwiek_**, na przykład:`http://www.mojadomena.com/wp-content/uploads` lub `http ://www.mojadomena.com/somefolder/someotherfolder/wp-content/uploads` więc muszę **pobrać dynamicznie** tylko część `somefolder/wp-content/uploads/2013/05/deleteme.png` ale ja **nie mam pojęcia, jak to osiągnąć!** Obecnie mogę usunąć swój obraz, ale tylko wtedy, gdy używam ścieżki zakodowanej na stałe w ten sposób: <!--pozwól użytkownikom usunąć obraz HARDCODED, więc nie ma go: ( - -> <?php $filename = 'wp-content/uploads/2013/05/deleteme.png';if(file_exists('wp-content/uploads/2013/05/de leteme.png')) { unlink('wp-content/uploads/2013/05/deleteme.png'); } ?> Próbowałem tego również, ale nie działa <?php $nazwa_pliku = $options_images['image_bg']; if(file_exists($nazwapliku)){ unlink($nazwapliku); } ?> Używam tej funkcji w opcjach mojego motywu do przesyłania obrazu: //Sprawdź tutaj nasze ustawienia function validate_setting($plugin_options){ //echo '<pre>'; print_r($_FILES); echo '</pre>'; $klucze = array_keys($_FILES); $i = 0; foreach ($_FILES as $image) { //Jeśli plik został przesłany... if($image['size']){ //Czy to jest obraz? if(preg_match('/(jpg|jpeg|png|gif)$/i',$image['type'])){ $override = array('test_form' => false); $plik = wp_handle_upload ($obraz, $ nadpisanie); $plugin_options[$klucze[$i]] = $plik['url']; } else{ wp_die('Nie znaleziono obrazu'); } } else{ $options = get_option('sandbox_theme_social_options'); $plugin_options[$klucze[$i]] = $opcje[$klucze[$i]]; } $i++; } return $plugin_options; } Ale oczywiście jest to niemożliwe, ponieważ nazwy obrazów mogą być dowolne, a `http://www.mojadomena.com/`można je zmienić na dowolne (`http://www.mojadomena.com/folder/inny_folder/i_inny_folder` ) **Czy ktoś może mi w tym pomóc?**


title: Niestandardowa funkcja zmiany kolejności załączników podczas tworzenia postów – prawie na miejscu

text: Mam problem z niestandardową rzeczą, którą robię. Wdrożyłem niestandardowy program do przesyłania obrazów w metabox w niestandardowym typie postu. Teraz próbuję wypracować sposób, który pozwoli mi zmienić kolejność przesyłanych obrazów. Odkryłem, że jQuery Sortable byłby wygodnym sposobem, aby użytkownik mógł po prostu przeciągać i upuszczać w jakiej kolejności powinny pojawić się obrazy (w interfejsie używam suwaka obrazu jQuery, aby pokazać obrazy i kolejność obrazów decydują dane załącznika "menu_order", więc potrzebuję jakiejś funkcjonalności, która zapisuje menu_order, które tworzę za pomocą jQuery Sortable.Teraz jest to uproszczony przykład tego, co mam: http://jsfiddle.net/ LN4sA/ Wraz z każdym załącznikiem dodałem ukryte pola wejściowe z identyfikatorem załącznika oraz pole, które będzie zawierało aktualną pozycję załącznika w kolejności menu.Identyfikator załącznika jest łatwo pobierany za pomocą podstawowego WP PHP ($attachment-> ID).Jednak nie znalazłem jeszcze łatwego sposobu na wypełnienie #att_order odpowiednim menu_order.Więc chciałbym uzyskać pomoc / dane wejściowe, jeśli ktoś byłby tak miły.Aby zapisać rzeczywiste informacje, których używam ajax aby pobrać wartości z pól wejściowych: add_action(' save_post', 'save_attachment_position'); funkcja save_attachment_position(){ global $post; if ($post->post_type == 'work') { ?> <script type="text/javascript"> //<![CDATA[ jQuery.ajax({ type: 'post', url: ajaxurl, data: { akcja: 'order_attachment', att_ID: jQuery(this).parents('.attachment').find('#att_id').val(), att_order: jQuery(this).parents('.attachment').find ('#att_order').val(), _ajax_nonce: jQuery('#ordernonce').val(), post_type: 'attachment' } }); //]]> </script><?php } } A następnie użyj wp_update_post, aby zaktualizować dane załącznika: add_action('wp_ajax_order_attachment', 'order_attachment'); funkcja order_attachment($post) { $attachmentdata = array(); $attachmentdata['ID'] = $_POST['att_ID']; $attachmentdata['menu_order'] = $_POST['att_order']; wp_update_post($attachmentdata); } Zdaję sobie sprawę, że potrzebuję tutaj jakiejś pętli, ale to rozwiążę. Jakieś pomysły? Dziękuję


title: Jak uruchomić funkcję raz na każdym poście w bazie danych?

text: Mam prostą funkcję, która automatycznie formatuje cały post po opublikowaniu/aktualizacji. Jest uzależniony od: add_action('save_post', 'myFunction'); Chciałbym sformatować każdy post, który mam już w bazie. Wiem, że mogę otworzyć każdy post i kliknąć aktualizację, aby wywołać hak "save_post" na myFunction w poście, ale moja baza danych postów jest dość duża.. Czy można **uruchomić funkcję tylko raz na każdym już opublikowanym poście* * w jakiś sposób czy aktualizować każdy post tak, aby funkcja była wywoływana przez hook automatycznie?


title: Wordpress wielostronne szablony haml

text: W tej chwili buduję bardzo duży multisite Wordpress i kiedy porządkuję projekt na najwyższym poziomie, chcę wiedzieć, czy można użyć haml lub phamlp do moich szablonów zamiast php. Widziałem dwie wtyczki do Wordpressa, ale żadna z nich nie działa z wieloma witrynami. Moje pytanie brzmi, jak mam napisać BARDZO podstawową wtyczkę do odczytywania szablonów i wyprowadzania ich w miejsce zwykłych? Chcę użyć haml, ponieważ jest znacznie czystszy niż duże szablony html/php i chcę po prostu przeanalizować plik header.haml zamiast header.php, jeśli to możliwe.


title: Potrzebujesz pomocy, przekazywanie zmiennych za pomocą get_post_meta

text: $slider_image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'suwak'); $slider_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'blog'); ?> <a href="<?php the_permalink(); ?>"> <img src="<?php echo $slider_image[0]; ?>" rel="<?php echo $slider_thumb[0]; ? >" alt="<?php the_title(); ?>" title="<?php echo '#caption'.$slide.''; ?>" />  To jest oryginalny kod do przekazywania wartość obrazu, który został przesłany przy użyciu domyślnego programu do przesyłania multimediów. Jednak zmieniłem metodę przesyłania na niestandardowy metabox, wtyczkę SB Uploader, która używa get_post_meta. Po prostu nie wiem, jak to zrobić, aby uzyskać ten sam wynik. „Blog” i „suwak” zawierają wartość rozmiaru miniatur. Jest to również wewnątrz pętli WHILE. Każda pomoc byłaby mile widziana. Nie jestem koderem, więc proszę o zepsucie :) Dzięki


title: Menu niestandardowe Opis Usuwanie tagów HTML

text:
Spędziłem dwa dni na badaniu tego. Muszę mieć możliwość dodania kodu HTML do opisu menu niestandardowych. Wszystko, co mogę znaleźć (w tym na tej stronie) pochodzi z lutego 2011 i wspomina o użyciu filtra strip_tags. Jednak to już nie działa. Rozwijam się na WP 3.4 Beta 4. Stworzyłem niestandardową klasę walkera i znalazłem filtr do usuwania tagów HTML i umieściłem następujące w functions.php: // Custom Walker Class do rozszerzenia klasy Default Nav Menu Description_Walker extends Walker_Nav_Menu { function start_el(&$output, $item, $depth, $args) { $classes = empty ( $item->classes ) ? tablica () : (tablica) $pozycja->klasy; $class_names = join( ' ' , Apply_filters( 'nav_menu_css_class' , array_filter( $classes ), $item ) ); ! puste ( $class_names ) i $class_names = 'class="'. esc_attr( $class_names) .'"'; // Zbuduj domyślne pozycje menu $output .= "
ID' $class_names>"; $atrybuty = ''; ! pusty( $item->attr_title ) i $attributes .= 'title="' .esc_attr( $item->attr_title ) .'"'; ! pusty( $item->target ) i $attributes .= ' target="' .esc_attr( $item->target ) .'"'; ! empty( $item->xfn ) i $attributes .= 'rel="' .esc_attr( $item->xfn) .'"'; ! empty( $item->url ) i $attributes .= ' href="' .esc_attr( $item->url ) .'"'; // Zbuduj opis $description = ( ! empty ( $item->description ) i 1 == $depth) ? '' . esc_html( $item->opis ) . '' : ''; $title = apply_filters( 'the_title', $item->title, $item->ID ); $item_output = $args->before . „” . $args->link_before . $tytuł . ' ' . $args->link_after . $opis . $args->po; // Ponieważ $output jest wywoływane przez referencję, nie musimy niczego zwracać. $wyjście .= zastosuj_filtry( 'walker_nav_menu_start_el' , $item_output , $item , $depth , $args ); } } // Zezwalaj na opisy HTML w menu WordPress remove_filter( 'nav_menu_description', 'strip_tags' ); add_filter('wp_setup_nav_menu_item', 'cus_wp_setup_nav_menu_item'); function cus_wp_setup_nav_menu_item( $menu_item ) { $menu_item->description = apply_filters('nav_menu_description', $menu_item->post_content ); zwróć $menu_item; } Następnie użył następującego polecenia, aby wypluć menu: <?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'primary', 'menu_class' => 'menu sf-menu', 'walker ' => nowy Description_Walker )); ?> Jednak tagi HTML są nadal usuwane! Zobacz **Zrzuty ekranu:** Menu Opis Wyniki


title: dodaj akcję wyświetlania postów za pomocą shortcode

text: Zajmuję się tworzeniem prostej wtyczki pozwalającej użytkownikowi wstawić post z frontendu. Mam shortcode [add-post], który użytkownik może umieścić na dowolnej stronie, powiedzmy, np. My Wall Page Teraz na My Wall Page pojawia się prosty formularz, który ma pole tytułu, pole treści i pole wyboru kategorii, dzięki czemu użytkownik może wybrać kategorię, w której ma umieścić swój post. Nie jestem pewien, jak powinna wyglądać akcja? add_shortcode('dodaj post','moja_funkcja'); function moja_funkcja(){ <form>...Tutaj znajduje się mój formularz do wstawienia nowego posta...</form> } add_action('????', 'my_fucntion'); Jaki powinien być haczyk? Próbowałem "init", "widgets_init", ale bezskutecznie. Jeśli nie dodam żadnej akcji lub nawet jeśli dodam 'init' lub 'widgets_init', mój formularz zostanie wyświetlony 3 razy; dwa razy na górze i raz w miejscu shortcode (czyli zastępuje mój shortcode)


title: Jak wyświetlić wiadomość podczas aktywacji wtyczki?

text: Rozwijam wtyczkę, ale podczas frazy aktywacyjnej ciągle napotykam błędy. Jednak nie ma łatwego sposobu na wyświetlenie komunikatów o błędach, ponieważ echo wywołałoby błąd „nieoczekiwanego wyniku”. Próbowałem haka admin_message, ale nie działa. Jak mogę ostrzec użytkownika, jeśli jakiś etap aktywacji nie powiódł się z powodu?


title: jak sprawdzić, czy strona główna jest ustawiona na wyświetlanie strony statycznej?

text: Muszę określić, czy ustawienia czytania są ustawione tak, aby używać strony statycznej, czy najnowszego posta na stronie głównej. Czy istnieje warunek, który zwróci true, jeśli strona główna jest ustawiona tak, aby wyświetlała stronę statyczną? Nie muszę sprawdzać, jaką stroną może być strona statyczna, tylko czy w ogóle jest to strona statyczna. Czy w tym scenariuszu dobrze byłoby użyć: if( is_front_page() && !is_home() ){ // wydaje się, że jesteśmy z przodu, ale nie na stronie głównej bloga, // więc musi to być strona statyczna.. }


title: WP_Query i paginacja PONOWNIE?

text: Używam klasy WP_Query do pobierania niektórych postów zgodnie ze zmiennymi ustawionymi w adresie URL. Wszystko działa dobrze, dopóki nie dojdziemy do stronicowania. Druga strona (chociaż posiadająca posty - przetestowała to robiąc paged => 2) wyrzuca błąd 404. Jak mogę to naprawić? Uwaga: Nietypowa metoda pobierania danych autora (reżysera) ze względu na sposób dodawania tej treści w backendzie. <?php /* GET STUFF */ $director_id = get_query_var('autor'); $rolka = get_query_var('rolka'); $informacja = get_query_var('informacje'); $strona = (get_query_var('stronicowany')) ? get_query_var('stronicowane') : 1; $director_args = array( 'meta_key' => '_metabox_director', 'meta_value' => $director_id, 'paged' => $page, 'types' => $reel, 'posts_per_page' => 2, 'post_type' => 'clip', 'orderby' => 'menu_order', 'order' => 'ASC', ); //query_posts($director_args); $wp_query = nowe WP_Query(); $wp_query->zapytanie($director_args); if ($wp_query->have_posts()) : ?> <?php next_posts_link('Dalej' ); ?> <?php previous_posts_link('Wstecz' ); ?> <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <!-- Zapętl pętlę --> <?php endwhile; ?> <?php endif; ?> Zmienne URL w początkowym widoku to `?author=2&reel=commercials` a na drugiej stronie `?author=2&reel=commercials?paged=2` ale zapytanie nie wyświetli postów. Dziękuję!


title: Niestandardowa struktura linku bezpośredniego

text: Kopałem kod od kilku dni i nie ma rozwiązania. :( Mam niestandardowy typ postu i dwie różne taksonomie. Możliwe jest uzyskanie następującej struktury permalinków (z filtrem typu postów add_rewrite_rule, mod_rewrite lub post_type_link) czy nie? mysite.com/post-type-slug/post1 mysite.com /post-type-slug/taxonomy1-term mojawitryna.com/post-type-slug/taxonomy2-term nie jest wymagane, ale byłoby miło utworzyć te adresy URL mojawitryna.com/post-type-slug/taxonomy1-term/taxonomy1 -subterm - jeśli każdy podatek jest hierarchiczny mysite.com/post-type-slug/taxonomy-term1/post1 - wyświetla posty pod podatkiem URL-e Masz jakiś pomysł?


title: Jak stworzyć menu takie jak wwe.com?

text: Chciałbym zaprojektować i opracować menu WordPress, takie jak menu wwe.com, w którym ma wiele kolumn, obrazów i sekcję wideo w rozwijanych menu. Potrafię stworzyć wielokolumnowe menu, ale nie jestem pewien, jak robić zdjęcia i filmy. Chcę również, aby mój klient mógł dodawać/usuwać filmy i obrazy w tym menu.


title: Konfiguracja uprawnień WordPress do łatwych aktualizacji

text: Otrzymałem zadanie skonfigurowania stosu LAMP na dedykowanym serwerze, aby uruchomić wiele witryn WordPress. Każda witryna jest połączona z własnym kontem SSH. Mam problem z ustawieniem uprawnień, które pozwolą każdemu użytkownikowi na łatwe przeprowadzanie aktualizacji, instalacji i aktualizacji wtyczek itp. z poziomu WordPressa. Normalnie skonfigurowałbym www-data, aby był właścicielem plików, ale to nie jest opcja, a ustawienie grupy www-data jako właściciela grupy plików również nie działa. Wydaje się też, że to nie działa, gdy instaluję rozszerzenie SSH2 dla PHP i szczerze mówiąc, wolałbym to obejść. Mogę zmusić go do pracy w przypadku instalacji i aktualizacji wtyczek, jeśli zainstaluję tę wtyczkę, ale musi być na to sposób. Czy ktoś ma z tym jakieś doświadczenie? Tak naprawdę nie udało mi się znaleźć żadnych przydatnych artykułów na forach Google lub WordPress.


title: Jak usunąć te pola z sekcji „Profil”?

text: Muszę usunąć niektóre pola profilu ze strony „Profil” zgodnie z rolami użytkownika. Do usunięcia selektora kolorów użyłem `remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")`. Chcę usunąć te pola: 1. Pseudonim 2. Wyświetlaj imię i nazwisko publicznie jako 3. Pola AIM, Yahoo, Google talk i O sobie 4. Sekcja „Pokaż pasek administracyjny” wraz z 2 polami wyboru, przez które przeszedłem przez plik „użytkownik- edit.php”, aby sprawdzić, czy są jakieś akcje/filtry, które mi na to pozwalają, ale wygląda na to, że ich nie ma. Czy ktoś może mi powiedzieć, jak to zrobić? Każda pomoc byłaby mile widziana. Dzięki **EDYTUJ:** Dzięki @helenhousandi za odpowiedź. Jednak już to zrobiłem w ten sposób. <?php add_action('admin_footer-profile.php', 'remove_profile_fields'); function remove_profile_fields() { if(current_user_can('custom_role')) { ?> <script type="text/javascript"> jQuery("h3:contains('Opcje osobiste')").next('.form-table' ).usunąć(); jQuery("h3:contains('Opcje osobiste')").remove(); jQuery("h3:contains('O sobie')").next('.form-table').remove(); jQuery("h3:contains('O sobie')").remove(); </script> <?php } } ?> Wiem, że to trochę dłużej, ale zadziałało! Myślę, że pójdę z odpowiedzią @helenhousandi.


title: Jak mogę usunąć menu WP z paska administracyjnego?

text: **Nigdy** nie używam menu WP (logo i jego elementów podrzędnych), chyba że przypadkowo je kliknę. I marnuję czas, kiedy nawiguję za pomocą klawiatury. Dodatkowo strona pomocy _nie jest naszą witryną_. Jak mogę to usunąć? Zrzut ekranu menu: ![tu wpisz opis obrazu](http://i.stack.imgur.com/bn8Xe.png)


title: meta treści na wymaganych stronach

text: Muszę zamieścić dodatkowe informacje na stronach programów, więc zdecydowałem się użyć metabox wordpress, ale jest on wyświetlany na wszystkich stronach. Czy istnieje możliwość sprawdzenia warunku, aby można było umieścić meta pole tylko na tych podstronach, gdzie strona_nadrzędna to 'Programy' lub lub id strony nadrzędnej. Próbowałem już tego... function parent_id() { global $post; if ( is_page() && $post->post_parent ) { return $post->post_parent; } else { return false; } } if(parent_id() && parent_id() == 15) { //register metabox } Ale to nie zadziałało, proszę o pomoc, dzięki.


title: Nie można zapisać ustawień do bazy danych za pomocą interfejsu API ustawień

text: Napisałem prosty kod testowy do testowania zapisywania danych za pomocą Setting API, ale wygląda na to, że nie działa. to naprawdę doprowadza mnie do szału. Pomóż mi wskazać problem, dzięki! function test_add_options_page() { add_menu_page( 'Opcja zapisu testowego', 'Zapis testowy', 'manage_options', 'strona testowa', 'strona testowa'); } add_action('admin_menu', 'test_add_options_page'); funkcja test_save_page() { ?> <form action="options.php" method="post"> <?php settings_errors(); settings_fields('strona testowa'); do_settings_sections('strona testowa'); prześlij_przycisk(); ?> </form> <?php } function test_add_settings() { add_settings_section( 'sekcja_1', 'Sekcja 1', 'output_section_desc', 'strona testowa' ); add_settings_field( 'field_id', 'Tytuł pola', 'add_field_callback', 'strona testowa', 'sekcja_1' ); register_setting('strona testowa', 'strona testowa'); } add_action('admin_init', 'test_add_settings'); function output_section_desc() { echo 'Opis sekcji...'; } function add_field_callback() { echo '<input type="test" id="field_id" />'; }


title: Permalinki kategorii Wordpress nie będą działać

text: Cześć z jakiegoś powodu mam problem z permalinkami mojej kategorii. Po kliknięciu linku kategorii pokazuje tylko jeden post z kategorii zamiast pokazywać wszystkie posty z kategorii.


title: Wzmacnianie wordpress: blokowanie / zawiera htaccess

text: Ta strona http://codex.wordpress.org/Hardening_WordPress mówi, że powinno to być zawarte w pliku .htaccess, aby blokować żądania plików w katalogu include. # Zablokuj tylko pliki dołączane. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\. php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule > # ROZPOCZNIJ WordPress ... Jak to działa ? O ile mogę to przeczytać, określa tylko _nie_, aby przepisać niektóre adresy URL (używając -), a następnie nie może przepisać wszystkich innych żądań. Czy czegoś brakuje?


title: Orderby menu_order nie działa

text: Mój kod to: $sliders = new WP_Query(array('post_type' => 'sliders', 'showposts' => '10', 'orderby' => 'menu_order', 'order' => 'ASC', 'countries '=> 'Default', 'supress_filters' => true, 'meta_query' => array( Ale wordpress orderby post_date :( [query] => Array ( [post_type] => slidery [showposts] => 10 [orderby] = > menu_order [zamówienie] => ASC [kraje] => ES [supress_filters] => 1 [meta_zapytanie] => Tablica ( [0] => Tablica ( [klucz] => _sektory [wartość] => 540 [porównaj] = > IN ) ) ) [request] => SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WEWNĘTRZNE DOŁĄCZENIE wp_term_relationships WŁĄCZONE (wp_posts.ID = wp_term_relationships.object_id) WEWNĘTRZNE DOŁĄCZENIE wp_postmeta WŁĄCZONE (wp_pos ts.ID = wp_postmeta.post_id) DOŁĄCZ wp_icl_translations t ON wp_posts.ID = t.element_id AND t.element_type = 'post_sliders' DOŁĄCZ wp_icl_languages l ON t.language_code=l.code AND l.active=1 ( WHERE 1 wp_term_relationships.term_taxonomy_id IN (16) ) AND wp_posts.post_type = 'sliders' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ((wp_postmeta.meta_key 'C_meta_wp = 'C_meta_value' AS CHAR) IN ('540')) ) AND t.language_code='es' GROUP BY wp_posts.ID ORDER BY wp_posts.post_date LIMIT ZAPISU 0, 10


title: Filtrowanie według pól niestandardowych post meta — wydajność

text: Przydałoby mi się kilka porad, jak uporządkować moje dane pod kątem wydajności. Mam niestandardowy typ posta z dużą ilością niestandardowych danych meta przechowywanych w tabeli `wp_postmeta` jako tablica serializowana pod jednym kluczem meta dla każdego postu. Teraz muszę pobrać kilka postów z tego typu postów i przefiltrować je według zapisanych metadanych. W tej chwili jedynym sposobem, w jaki mogę to zrobić, jest pobranie WSZYSTKICH metadanych dla WSZYSTKICH postów tego typu, następnie odserializowanie ich do ogromnej tablicy PHP, a następnie użycie pętli `foreach`, aby sprawdzić je wszystkie w jednym jeden po drugim. Wydaje mi się, że to naprawdę zły/powolny sposób robienia rzeczy. W tym momencie myślę, że powinienem wyrzucić cały plan i zacząć od zera, używając własnej tabeli niestandardowej. To jest po prostu takie nie-wordpressowe, a byłoby to DUŻO pracy. Moim innym pomysłem jest zrobienie tego, co sugerowano w tym innym pytaniu (meta_query z wartościami meta jako tablicami serializacji) i oddzielenie wszystkich wartości meta na oddzielne klucze meta, a następnie zapytanie o nie, jak pokazano w tym pytaniu. Problem, który widzę, polega na tym, że to zapytanie również nie wygląda na szczególnie szybkie, a moja tabela `wp_postmeta` stałaby się OGROMNA. Wszelkie pomysły będą **bardzo** mile widziane.


title: Pokaż jedną z taksonomii zawsze jako domyślną

text: Mam niestandardowy typ posta o nazwie **personel**, który ma niestandardową taksonomię o nazwie **departments**. Chciałem, aby strona główna personelu (archive-staff.php) nie pokazywała WSZYSTKICH członków personelu, ale właściwie pierwszy dział (powiedzmy, że są 3 działy). Moja strona archiwum zaczyna się tak: global $wp_query; $args = array_merge( $wp_query->query, array( 'post_type' => 'personel', ) ); zapytanie_posty( $args ); while (have_posts()): the_post(); // ... Nie mam pojęcia, jak stąd wyjść. Muszę również wyświetlić aktualny tytuł działu.


title: Czy wtyczki Wordpress mogą „rozmawiać ze sobą”?

text: Przepraszam, jeśli to naprawdę głupie pytanie, ale jestem bardzo nowy w Word Press. Moje pytanie brzmi, czy jedna wtyczka może zaktualizować ustawienia innej wtyczki Wordpress? Przypuszczam, że może to zależeć od wtyczki i miejsca, w którym przechowuje swoje ustawienia. Nie wiem czy wtyczki przechowują swoje ustawienia w plikach statycznych czy w bazie danych.


title: Wordpress - nie mogę się zalogować na stronie logowania

text: Mam wordpress i woocommerce na tej stronie: http://goo.gl/PHIWIo Zrobiłem ten szablon, ale strona moje konto nie może się zalogować. Jeśli spróbujesz: Login: teste Hasło: teste123 Mówi "Jesteś zalogowany Teste", ale tak naprawdę się nie loguje. Kiedy próbujesz się zarejestrować, zarejestruj się pomyślnie, wysyła e-mail i wszystko, ale jeśli spróbujesz zalogować się po rejestracji on nie loguje się.... na górnym pasku ma "Seja Bem Vindo! Registrar/entrar" Oznacza to "Witaj! Zarejestruj się/Zaloguj się" A gdy jesteś już zalogowany powie "Welcome YourName". Ale tak się nie stało. Próbowałem usunąć wp-content/themes/era420/woocommerce/myaccount/form-login.php, ale nie logowałem się. Próbowałem wyczyścić wszystkie moje functions.php, ale błąd pozostał. Stało się to może po zmianie hosta, myślę, że mam pewne problemy z pamięcią podręczną, których nie znam. Ktokolwiek? AKTUALIZACJA: Kiedy próbujesz się zalogować po raz pierwszy, loguje się pomyślnie, ale jeśli się wylogujesz, nie możesz się zalogować ponownie .... Kontaktuję się z Bluehost Livechat, nie ma começo nós achavamos que o problema era de vanishing, ele fez as mudanças bez znikania, mas depois dele fazer jako mudanças bez znikających ciasteczek começamos achar que era. Jego przesłanie: „Tak, to wydaje się trochę dziwne, nie musiałem wcześniej w pełni wyczyścić moich plików cookie, aby działał, ale wygląda na to, że zapisuje pliki cookie i myśli, że nadal jesteś zalogowany, więc nie próbuj zalogować się ponownie lub coś w tym stylu.


title: Jak uzyskać meta wartość w wp_attachment_metadata

text: Chcę uzyskać `wp_attachment_metadata` na swój własny sposób. Chcę rozdzielić rozmiary (Miniatura, Duży, Średni, Mały). Wartość meta w bazie danych wygląda tak: a:5:{s:5:"width";i:660;s:6:"height";i:320;s:4:"plik";s:39: "2013/07/debut -busana-muslim-new-yor.jpg";s:5:"rozmiary";a:2:{s:9:"miniaturka";a:4:{s:4:"f ile";s:39:"debut-busana-muslim-new-yor-150x150.jpg";s:5:"szerokość";i:150;s: 6:"wysokość";i:150;s:9 :"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s: 4:"plik";s:39:"debut-busana-muslim- nowy-yor-300x145.jpg";s:5:"szerokość";i:30 0;s:6:"wysokość";i:145;s:9:"typ-mime";s:10:"obraz /jpeg";}}s:10:"image_met a";a:10:{s:8:"aperture";i:0;s:6:"kredyt";s:0:"";s:6 :"kamera";s:0:"";s:7: "podpis";s:0:"";s:17:"created_timestamp";i:0;s:9:"prawa autorskie";s:0 :"";s:1 2:"focal_length";i:0;s:3:"iso";i:0;s:13:"szybkość_migawki";i:0;s:5:"tytuł"; s:0:"";}} Cóż, utknąłem. Nie wiem, jak oddzielić tę tablicę. Każdy wie, jak oddzielić tę tablicę, aby uzyskać rozmiary i adres URL obrazów.


title: Jak zmienić podsumowanie witryny w wynikach wyszukiwania?

text: Mam stronę internetową, nad którą pracuję, hendersonvillecameraclub.org. Kiedy używam Google do wyszukiwania witryny, używając hasła „hendersonville camera club” jako hasła wyszukiwania, moja witryna jest szóstym wynikiem. Pod tytułem strony zawiera fragment najnowszego posta w witrynie. Moje pytanie brzmi, jak zmienić informacje wyświetlane w podsumowaniu? Wolałbym umieścić tam jakiś statyczny tekst, który zapewnia lepszy opis strony. Ta witryna jest hostowana przez GoDaddy, nie jestem pewien, czy to istotne informacje. Dziękuję!


title: zmienna łącząca z użytkownikiem

text: czy istnieje łatwy sposób na zapisanie zmiennej i powiązanie jej z użytkownikiem? w szczególności chcę użyć meta pola, aby wyprowadzić zmienną na pierwszej stronie, a następnie sprawić, by była to link, więc jeśli użytkownik go kliknie, przechowa go w div. Mogę zrobić wszystkie rzeczy związane z metaboxem, wystarczy, że zmienna będzie przechowywana po kliknięciu linku. coś w rodzaju ulubionego systemu, ale bardziej niestandardowego. zakładając, że będę musiał jakoś uzyskać dostęp do bazy danych? nawet nie wiem, od czego zacząć.


title: Aktualizuj rolę użytkownika w sieci, gdy użytkownik strony głównej zostanie zaktualizowany

text: Używam nieco zmodyfikowanej kopii wtyczki Multi Site User Management, aby synchronizować użytkowników w sieci wielostanowiskowej, ale mam z tym jeden problem. Gdy rola użytkownika jest aktualizowana w witrynie głównej, rola NIE jest aktualizowana w witrynie podrzędnej. Aby wszystko działało poprawnie, role użytkowników muszą być zsynchronizowane. Szukałem bez powodzenia, więc czy jest jakaś akcja uruchamiana po zaktualizowaniu użytkownika? Wiem o funkcjach / hookach profile_update i wp_update_user, ale żadna z nich nie działa, ponieważ rola użytkownika jest aktualizowana za pomocą funkcji zewnętrznej. Potrzebuję więc nowego sposobu na synchronizację ról użytkowników. Jakieś pomysły?


title: Niestandardowa taksonomia nie jest zapisywana w niestandardowym typie wpisu

text: To bardzo niezwykłe i nie mogę zrozumieć, dlaczego tak się dzieje. Zarejestrowałem niestandardowy posttype i taksonomię (dla tego posttype). Widżet taksonomii jest wyświetlany na stronie „edytuj post”, chociaż gdy próbuję zapisać taksonomię * Pojawiają się sugestie * Mogę je wybrać * Ale kiedy klikam akcję „aktualizuj”, strona ładuje się ponownie, ale nie pokazuje taksonomia. Masz pomysł, dlaczego tak się dzieje?


title: Dodaj rozszerzenie .html do niestandardowej taksonomii

text: Muszę dodać '.htm' do wszystkich moich adresów URL w nowej witrynie - klient tego wymaga, ponieważ konwertuję starą statyczną witrynę na WP. (Używam Remove Taxonomy Base Slug, aby ukryć fragment adresu URL „tematu” mojej niestandardowej taksonomii.) Teraz mam rozszerzenie „.htm” na wszystkich stronach, postach itp. Teraz muszę tylko dodać ten „.htm” rozszerzenie do moich archiwów taksonomii niestandardowej. Czy ktoś ma pomysł, jak to zrobić? Próbowałem tego: /* Add Tax extension .htm */ add_action('init', 'add_html_ext_to_custom_post_type_taxonomies'); function add_html_ext_to_custom_post_type_taxonomies() { add_rewrite_rule('^topic/([^/]+)\.htm', 'index.php?topic=$matches[1]', 'top'); }, które znalazłem tutaj Dodaj rozszerzenie .html do niestandardowych taksonomii typu post To nie dało mi żadnych zmian i pamiętałem o opróżnieniu permalinków. Dziękuję :)


title: Zdefiniować ustawienia regionalne używane przez WordPress z funkcjami gettext?

text: Próbuję zlokalizować moją wtyczkę. Mam dwa pliki `.mo`: /lang/myplugin-es_ES.mo /lang/myplugin-en_US.mo Tłumaczenie działa, ale nie rozumiem, jak zmienić język, aby używać pliku `en_US` zamiast ` es_ES”. Oto, co próbuję: function define_locale($locale) { $subdomain = array_shift(explode(".",$_SERVER['HTTP_HOST'])); if($subdomain == "en") return 'en_US'; w przeciwnym razie zwróć $locale; } // Zdefiniuj ustawienia regionalne add_filter('locale','define_locale',10); Podczas gdy `get_locale()` pokazuje lokalizację `en_US`, moja wtyczka nadal używa pliku `es_ES`. Co ja robię źle?


title: Wymusić wp_enqueue_scripts do HEADER?

text: Wtyczka, nad którą pracuję, wymaga załadowania jquery przed przetworzeniem zawartości. Niektóre motywy giełdowe, takie jak 2010, 2011 i 2012 (chyba) umieszczają JS w stopce. Jak mogę wymusić ładowanie skryptów w nagłówku (powiadomię użytkowników wtyczki, że wtyczka tego wymaga)?


title: Jak powiedzieć motywowi, aby używał różnych plików .mo i .po?

text: Mam motyw, który ładuje pliki .po i .mo, aby wyświetlać ciągi w języku angielskim. Chcę mieć tylko jeden język (polski), ale te dwa pliki to en_US. Próbowałem podmienić zawartość w pliku en_US.po ale nic się nie zmieniło na stronie, nie wiem dlaczego. Gdzie przechowuje ciągi, jeśli zmiana plików .po nic nie zmienia?


title: Pętla wtórna odcina się na 10 postach?

text:
Mam pętlę, aby pobrać nazwę tagu z wiadomości URL, a następnie wyświetlić wszystkie posty pogrupowane według kategorii, które pasują do tego tagu. Działa, ale ostatnio zauważyłem, że wyświetla tylko 10 postów, pomimo mojego ustawienia (myślałem) posts_per_page na -1. Chcę wyświetlić **wszystkie** posty pasujące do tagu, pogrupowane według kategorii. Oto kod: <?php // pobierz wszystkie kategorie z bazy danych $cats = get_categories(); $slug = the_slug(); // przejdź przez kategorie foreach ($cats as $cat) { // ustaw identyfikator kategorii $cat_id= $cat->term_id; // utwórz niestandardowe zapytanie wordpress query_posts("cat=$cat_id&tag=$slug&post_per_page=-1&orderby=title&order=ASC"); // uruchom pętlę wordpress! if (have_posts()) : // Utwórz nagłówek dla kategorii echo '
'.$cat->nazwa.'
'; while (have_posts()) : the_post(); ?> <?php // utwórz nasz link teraz, gdy post jest ustawiony ?>

<?php the_title(); ?>
 <?php the_content(); ?> <?php //include('niestandardowe-pola.php'); ?>
 <?php //echo '
'; ?> <?php koniec; endif; // wykonaliśmy naszą pętlę wordpress. Rozpocznie się od nowa dla każdej kategorii ?> <?php } // wykonałeś instrukcję foreach ?>


title: Gorsza jakość miniatur po instalacji biblioteki GD

text: W zeszłym tygodniu musiałem zainstalować bibliotekę GD na moim serwerze, aby umożliwić zmianę rozmiaru miniatur dla motywu premium. Po zainstalowaniu biblioteki GD na serwerze jakość obrazu nowo dodanych miniaturek dla innego motywu pogorszyła się pod względem jakości. Miniatury są generowane we właściwym rozmiarze i nie są w żaden sposób „zmieniane” za pomocą CSS. Wszystkie miniatury są zmieniane tylko z zachowaniem proporcji i nie są przycinane. Podniosłem już jakość obrazu do 100% w ten sposób: function volley_thumbnail_quality( $quality ) { return 100; } add_filter( 'jpeg_quality', 'volley_thumbnail_quality' ); add_filter( 'wp_editor_set_quality', 'volley_thumbnail_quality' ); Ale bez widocznego wzrostu jakości. Znalazłem już podobne pytanie na StackOverflow, ale nie chcę dyskutować z klientem o profilach Adobe RGB, które być może są dodawane do przesłanego pliku, ponieważ większość redaktorów strony nie jest zbyt obeznana z technologią. Czy jest inny sposób na podniesienie jakości miniatury?


title: Funkcja WordPress get_the_terms() zwraca błąd „Nieprawidłowa taksonomia”

text: Wygląda na to, że funkcja get_the_terms( $id, $taxonomy ) zawsze zwraca błąd, jeśli jest używana poza WordPress (tj. jest zintegrowana z PHP przy użyciu tej metody). Uważam, że niektóre biblioteki mogą być wymagane i powinny być wyraźnie uwzględnione, aby to zadziałało. Na przykład poniższy kod, gdzie 284 jest poprawnym identyfikatorem posta, a 'keyword' jest poprawną taksonomią niestandardową... $terms = get_the_terms( 284, 'keyword' ); var_dump($warunki); ... działa idealnie, gdy jest używany w interfejsie administratora (za pośrednictwem wtyczki), ale to samo powoduje błąd „Nieprawidłowa taksonomia” w przypadku użycia poza interfejsem administratora przy użyciu tej metody. Jakieś sugestie? **Dodatkowe informacje:** Taksonomia 'keyword' jest zarejestrowana w punkcie zaczepienia 'init' Kod rejestracji taksonomii: add_action( 'init', array( $this, 'create_taxonomy' ) ); public function create_taxonomy() { $keyword_args = array( 'labels' => array( 'name' => 'Słowa kluczowe', 'singular_name' => 'Słowo kluczowe', 'search_items' => 'Wyszukaj słowa kluczowe', 'all_items' = > 'Wszystkie słowa kluczowe', 'edit_item' => 'Edytuj słowo kluczowe', 'update_item' => 'Aktualizuj słowo kluczowe', 'add_new_item' => 'Dodaj nowe słowo kluczowe', 'new_item_name' => 'Nowa nazwa słowa kluczowego', 'popular_items ' => 'Popularne Acres', 'not_found' => 'Nie znaleziono słów kluczowych', 'menu_name' => 'Słowa kluczowe', ), 'hierarchical' => false, 'public' => true ); register_taxonomy('keyword', array('post'), $keyword_args); } Kod poza WordPress, który używa get_the_terms(): define('WP_USE_THEMES', false); wymagaj('../../../../wp-blog-header.php' ); $terms = get_the_terms( 284, 'słowo kluczowe' ); var_dump($warunki);


title: Pasek boczny nie pojawia się

text: Pasek boczny nie pojawia się na mojej stronie: http://richardclunan.com/ Mam widżet Tekst na pasku bocznym z tekstem testowym… W „Edytuj stronę” nie ma opcji „brak paska bocznego”… Jakie rzeczy czy muszę zrobić, aby pojawił się pasek boczny? (Mogę to mieć, więc nic nie pojawia się w obszarze paska bocznego - po prostu aktywuj go, aby przerzucić tekst głównego obszaru na stronie, aby długość linii była krótsza - wspominam o tym na wypadek, gdyby nie było to możliwe aby go aktywować i nic się nie pojawia...) Edytuj: Dodaję kilka pytań w odpowiedzi na odpowiedź: 1. Słowo 'register_sidebar' pojawia się w functions.php – czy to oznacza, że obsługa dynamicznego paska bocznego jest włączona? 2. czy mogę dodać kod, który SimonDowdles podał tylko do jednego pliku? Albo do strony page.php i single.php? 3. Gdzie w kodzie, powiedzmy page.php, dodać kod, który podał SimonDowles? 4. Czy powinienem utworzyć motyw potomny dla tej zmiany, którą chcę wprowadzić? Jeśli tak, jaki proces mam wykonać, aby to zrobić? 5. Czy mam zastąpić frazę „id-of-desired-sidebar” z kodu SimonDowdles nazwą mojego paska bocznego? Skąd mam nazwę? W sekcji Widgety znajduje się pasek boczny o nazwie „Widżety domowe” — czy to jest nazwa, której używam? Pisany z łącznikiem?


title: t5-fresh-editor-stylesheets.php przerywa umieszczanie obrazu w edytorze WP Beta 3

text: Prowadzę witrynę programistyczną z wtyczką WordPress beta, aktualnie używam wersji 3.9 beta 3 Używam wtyczki funkcjonalności Bill Erickson's Core, która wywołuje kod Toscho t5-fresh-editor-stylesheets.php „Wymusza nowe arkusze stylów edytora na parametr wersji” Aktualizacja do beta Zauważyłem, że podczas wstawiania obrazu w edytorze postów ekran edycji nie pokazuje ikon edycji/usuwania, ani nie jest prawidłowo pozycjonowany podczas wybierania wyrównania. Obraz jest jednak wyświetlany poprawnie na stronie podglądu. Nie jestem wielkim koderem, ale domyśliłem się, że jest to problem TinyMCE CSS, jednak wyłączyłem wszystkie wtyczki i poprawiono rozmieszczenie obrazów w edytorze i ponownie pojawiły się ikony obrazów. Śledziłem problem w kodzie t5-fresh-editor-stylesheets.php - skomentowanie wywołania tej strony naprawiło problem. Jakieś szanse na naprawę Toscho? Proszę mi wybaczyć, jeśli to nie jest właściwe miejsce do opublikowania tej prośby.


title: Wiadomości z pamięci podręcznej nie są już w źródle strony

text:
Umieściłem `advanced-cache.php` i `object-cache.php` w `wp-contents` i zaktualizowałem `wp-config.php` z `define('WP_CACHE', true);`, ale nie zobacz komunikaty w źródle strony informujące mnie, że strona jest obsługiwana z pamięci podręcznej. Mam WordPress 3.8.1, APC Object Cache Backend 2.0.6 i Batcache 1.2. Kiedyś widziałem wiadomości w źródle strony, ale już nie. Dotyczy to kilku instalacji WordPress. Widzę wtyczki pojawiające się jako zainstalowane w opcji wyświetlania Drop-ins w obszarze Wtyczki na pulpicie nawigacyjnym WordPress. Zawartość `object-cache.php`: <?php /* Nazwa wtyczki: APC Object Cache Opis: Backend APC dla WP Object Cache. Wersja: 2.0.6 URI: http://txfx.net/wordpress-plugins/apc/ Autor: Mark Jaquith Autor URI: http://coveredwebservices.com/ Zainstaluj ten plik w wp-content/object-cache.php Na podstawie na backendzie pamięci podręcznej obiektów Memcached Ryana Borena http://wordpress.org/extend/plugins/memcached/ */ if ( function_exists( 'apc_fetch' ) ) : if ( version_compare( '5.2.4', phpversion(), '>=' ) ) { wp_die( 'Zaplecze pamięci podręcznej obiektów APC wymaga PHP 5.2 lub nowszego. Ty są uruchomione '.phpversion() .'.Proszę usunąć plik object-cache.php z katalogu zawartości.' ); } if ( function_exists( 'wp_cache_add' ) ) { // Zwykła matryca, nie wp_die(), ponieważ jest umieszczana w piaskownicy i pokazywana w małej matrycy iframe ( 'BŁĄD: To jest nie wtyczka i nie powinna być aktywowana jako jedna.

Zamiast tego, ' .str_replace( $_SERVER['DOCUMENT_ROOT'], '', __FILE__) .' musi zostać przeniesiony do ' .str_replace($_SERVER['DOCUMENT_ROOT'], '', trailingslashit( WP_CONTENT_DIR) ) 'object-cache.php' ); } else { // Użytkownicy z konfiguracjami, w których wiele instalacji współdzieli wspólny plik wp-config.php, mogą użyć tego // do zagwarantowania unikalności kluczy generowanych przez ten object cache if ( !defined( 'WP_APC_KEY_SALT' ) define( 'WP_APC_KEY_SALT', 'wp' ); funkcja wp_cache_add ( $ klucz, $ dane, $ grupa = '', $ wygasa = 0 ) { global $ wp_object_cache; return $wp_object_cache->add( $klucz, $dane, $grupa, $wygasa); } function wp_cache_incr( $klucz, $n = 1, $grupa = '' ) { global $wp_object_cache; return $wp_object_cache->incr2($klucz,$n,$grupa); } function wp_cache_decr( $klucz, $n = 1, $grupa = '' ) { global $wp_object_cache; return $wp_object_cache->decr( $klucz, $n, $grupa); } funkcja wp_cache_close() { return true; } funkcja wp_cache_delete ( $ klucz, $ grupa = '' ) { global $ wp_object_cache; return $wp_object_cache->delete ($klucz, $grupa); } funkcja wp_cache_flush() { globalna $wp_object_cache; zwróć $wp_object_cache->flush(); } funkcja wp_cache_get( $ klucz, $group = '', $force = false ) { global $wp_object_cache; return $wp_object_cache->get( $klucz, $grupa, $force ); } funkcja wp_cache_init() { globalna $wp_object_cache; $wp_object_cache = nowy APC_Object_Cache(); } funkcja wp_cache_replace ( $ klucz, $ dane, $ grupa = '', $ wygasa = 0 ) { global $ wp_object_cache; return $wp_object_cache->replace ( $ klucz, $ dane, $ grupa, $ wygasa ); } funkcja wp_cache_set( $ klucz, $ dane, $ grupa = '', $ wygasa = 0 ) { global $ wp_object_cache; if (defined('WP_INSTALLING') == false ) return $wp_object_cache->set( $key, $data, $group, $expire ); w przeciwnym razie zwróć $wp_object_cache->delete($klucz, $grupa); } funkcja wp_cache_switch_to_blog($blog_id) { globalna $wp_object_cache; zwróć $wp_object_cache->switch_to_blog($blog_id); } function wp_cache_add_global_groups($groups) {globalna pamięć podręczna $wp_object_cache; $wp_object_cache-> add_global_groups ($ grupy); } funkcja wp_cache_add_non_persistent_groups($groups) { global $wp_object_cache; $wp_object_cache-> add_non_persistent_groups ($ grupy); } klasa WP_Object_Cache { var $global_groups = array(); var $no_mc_groups = array(); var $cache = tablica(); var $stats = array( 'get' => 0, 'delete' => 0, 'add' => 0 ); var $group_ops = tablica(); var $cache_enabled = prawda; var $default_expiration = 0; var $abspath = ''; var $debug = fałsz; function add( $id, $data, $group = 'default', $expire = 0 ) { $key = $this->key( $id, $group ); if ( is_object( $dane ) ) $dane = klon $dane; $dane_magazynu = $dane; if ( is_array( $data ) ) $store_data = new ArrayObject( $data );if ( in_array( $group, $this->no_mc_groups )) { $this->cache[$key] = $data; zwróć prawdę; } elseif ( isset( $this->cache[$key] ) && $this->cache[$key] !== false ) { return false; } $wygasa = ( $wygasa == 0 ) ? $this->default_expiration : $expire; $wynik = apc_add( $klucz, $store_data, $wygasa); if ( false !== $result ) { @ ++$this->stats['add']; $this->group_ops[$group][] = "dodaj $id"; $this->cache[$klucz] = $dane; } return $wynik; } function add_global_groups( $groups ) { if ( !is_array( $groups ) ) $groups = (array) $groups; $this->global_groups = array_merge( $this->global_groups, $groups ); $this->global_groups = array_unique( $this->global_groups ); } funkcja add_non_persistent_groups( $groups ) { if ( !is_array( $groups ) ) $groups = (array) $groups; $this->no_mc_groups = array_merge( $this->no_mc_groups, $groups ); $this->no_mc_groups = array_unique( $this->no_mc_groups ); } // Nazywa się to incr2, ponieważ Batcache szuka incr // Zdefiniujemy to w rozszerzeniu klasy, jeśli jest dostępne (APC 3.1.1 lub nowszy) funkcja incr2( $id, $n = 1, $group = 'default ' ) { $klucz = $ten->klucz ( $id, $grupa ); if ( function_exists( 'apc_inc' ) ) return apc_inc( $klucz, $n ); w przeciwnym razie zwróć false; } function decr( $id, $n = 1, $group = 'default' ) { $key = $this->key( $id, $group ); if ( function_exists( 'apc_dec' ) ) return apc_dec( $id, $n ); w przeciwnym razie zwróć false; } funkcja close() { return true;} function delete( $id, $group = 'default' ) { $key = $this->key( $id, $group ); if ( in_array( $group, $this->no_mc_groups ) ) { unset( $this->cache[$key] ); zwróć prawdę; } $wynik = apc_delete($klucz); @ ++$this->stats['usuń']; $this->group_ops[$group][] = "usuń $id"; if ( false !== $result ) unset( $this->cache[$key] ); zwróć $wynik; } function flush() { // Nie opróżniaj jeśli multi-blog. if ( function_exists( 'is_site_admin' ) || defined( 'CUSTOM_USER_TABLE' ) && defined( 'CUSTOM_USER_META_TABLE' ) ) return true; $this->cache = array(); return apc_clear_cache( 'użytkownik' ); } function get($id, $group = 'default', $force = false) { $key = $this->key($id, $group); jeśli (isset($this->cache[$key]) && ( !$force || in_array($group, $this->no_mc_groups) ) ) { if ( is_object( $this->cache[$key] ) ) $value = sklonuj $this->cache[$key]; w przeciwnym razie $wartość = $this->cache[$klucz]; } else if ( in_array($group, $this->no_mc_groups)) { $this->cache[$key] = $value = false; } else { $wartość = apc_fetch( $klucz ); if ( is_object( $wartość ) && 'ArrayObject' == get_class( $value ) ) $value = $value->getArrayCopy(); if ( NULL === $wartość ) $wartość = fałsz; $this->cache[$klucz] = ( is_object( $wartość ) ) ? klon $wartość : $wartość; } @ ++$this->stats['get']; $this->group_ops[$group][] = "pobierz $id"; if ( 'checkthedatabaseplease' === $value ) { unset( $this->cache[$key] ); $wartość = fałsz;} zwraca $wartość; } klawisz funkcyjny( $klucz, $grupa ) { if ( empty( $group ) ) $group = 'default'; if ( false !== array_search( $group, $this->global_groups ) ) $prefix = $this->global_prefix; else $prefix = $this->blog_prefix; zwróć WP_APC_KEY_SALT . ':' . $this->abspath . ":$przedrostek$grupa:$klucz"; } function replace( $id, $data, $group = 'default', $expire = 0 ) { return $this->set( $id, $data, $group, $expire ); } zestaw funkcji( $id, $data, $group = 'default', $expire = 0 ) { $key = $this->key( $id, $group ); if ( isset( $this->cache[$key] ) && ('checkthedatabaseplease' === $this->cache[$key] ) ) return false; if ( is_object( $dane ) ) $dane = klon $dane; $dane_magazynu = $dane; jeśli ( is_array( $dane) ) $store_data = new ArrayObject( $data ); $this->cache[$klucz] = $dane; if ( in_array( $group, $this->no_mc_groups )) zwraca true; $wygasa = ( $wygasa == 0) ? $this->default_expiration : $expire; $wynik = apc_store( $klucz, $store_data, $expire ); zwróć $wynik; } function switch_to_blog( $blog_id ) { global $table_prefix; $blog_id = (int) $blog_id; $this->blog_prefix = ( is_multisite() ? $blog_id : $table_prefix ). ':'; } function colorize_debug_line( $line ) { $colors = array( 'get' => 'zielony', 'set' => 'fioletowy', 'add' => 'niebieski', 'delete' => 'czerwony'); $cmd = substr( $linia, 0, strpos( $linia, ' ' ) ); $cmd2 = "$cmd";zwróć $cmd2 . substr( $linia, strlen( $cmd ) ) . "\n"; } function stats() { echo "
\n"; foreach ( $this->stats as $stat => $n ) { echo "$stat $n"; echo "
\n"; } echo "
\n"; echo "
APC:
"; foreach ( $this->group_ops as $group => $ops ) { if ( !isset( $_GET['debug_queries'] ) && 500 < count( $ops ) ) { $ops = array_slice( $ops, 0, 500 ); echo "<big>Za dużo do pokazania! Pokaż je mimo to.</big>\n"; } echo "
$polecenia grupowe
"; echo "
\n"; $linie = tablica(); foreach ( $ops as $op ) { $lines[] = $this->colorize_debug_line($op); } print_r($linie); echo "
\n";} if ( $this->debug ) { $apc_info = apc_cache_info(); echo "
"; echo "Trafienia w pamięci podręcznej: {$apc_info['num_hits']}
\n"; echo "Błędy w pamięci podręcznej: {$apc_info['num_misses']}\n"; echo "
\n"; } } function WP_Object_Cache() { $this->abspath = md5( ABSPATH ); globalny $blog_id, $table_prefix; $this->global_prefix = ''; $this->blog_prefix = ''; if ( function_exists( 'is_multisite' )) { $this->global_prefix = ( is_multisite() || defined('CUSTOM_USER_TABLE') &&defined('CUSTOM_USER_META_TABLE') ) ? '' : $przedrostek_tabeli; $this->blog_prefix = ( is_multisite() ? $blog_id : $table_prefix ). ':'; } $this->cache_hits =& $this->stats['get']; $this->cache_misses =& $this->stats['add']; } }if ( function_exists( 'apc_inc' )) { class APC_Object_Cache extends WP_Object_Cache { function incr( $id, $n = 1, $group = 'default' ) { return parent::incr2( $id, $n, $group ); } } } else { class APC_Object_Cache extends WP_Object_Cache { // Blank } } } // !function_exists( 'wp_cache_add' ) else : // Brak funkcji APC apc_not_actually_running() { $GLOBALS['_t_wp_using; unset( $GLOBALS['wp_filter']['all'][-100]['apc_not_actually_running'] ); } $ GLOBALS ['_wp_using_ext_object_cache'] = fałsz; // To zostanie zastąpione od wersji WP 3.5, więc musimy podłączyć się do 'all': $GLOBALS['wp_filter']['all'][-100]['apc_not_actually_running'] = array( 'function' = > 'apc_not_actually_running', 'accepted_args' => 0 ); require_once ( ABSPATH . WPINC . '/cache.php' ); endif; Zawartość `advanced-cache.php`: <?php // nanananananananananananananananana BATCACHE!!! function batcache_cancel() { global $batcache; if ( is_object($batcache)) $batcache->anuluj = true; } class batcache { // To jest konfiguracja podstawowa. Możesz edytować te zmienne lub przenieść je do pliku wp-config.php. var $max_wiek = 300; // Wygaśnięcie elementów batcache przestarzałych o tyle sekund (zero, aby wyłączyć batcache) var $remote = 0; // Zero wyłącza wysyłanie buforów do zdalnych centrów danych (żądanie/s nigdy nie jest wysyłane) var $times = 2; // Przechowuj w pamięci podręcznej tylko stronę po uzyskaniu do niej dostępu tyle razy... (dwa lub więcej) var $seconds = 120; // ...w ciągu tylu sekund (zero, aby zignorować to i natychmiast użyć batcache) var $group = 'batcache'; // Nazwa grupy memcached. Możesz symulować opróżnianie pamięci podręcznej, zmieniając to. var $unikalna = tablica(); // Jeśli warunkowo serwujesz różneent treści, umieść tutaj wartości zmiennych. var $nagłówki = tablica(); // Dodaj tutaj nagłówki. Zostaną one wysłane z każdą odpowiedzią z pamięci podręcznej. var $cache_redirects = fałsz; // Ustaw true, aby włączyć buforowanie przekierowań. var $redirect_status = fałsz; // To jest ustawione na kod odpowiedzi podczas przekierowania. var $redirect_location = false; // To jest ustawione na lokalizację przekierowania. var $uncached_headers = array('kodowanie-transferu'); // Te nagłówki nigdy nie będą buforowane. Zastosuj strtolower. var $debug = prawda; // Ustaw false, aby ukryć informacje o pamięci podręcznej  var $cache_control = true; // Ustaw false, aby wyłączyć nagłówki Last-Modified i Cache-Control var $cancel = false; // Zmień to, aby anulować bufor wyjściowy. Użyj batcache_cancel(); var $genlock; // Używane wewnętrznie var $do; // Użyta wewnętrznie funkcja batcache( $settings ) { if ( is_array ( $settings ) ) foreach ( $ustawienia jako $k => $v ) $this->$k = $v; } function is_ssl() { if ( isset($_SERVER['HTTPS']) ) { if ( 'on' == strtolower($_SERVER['HTTPS']) ) return true; if ( '1' == $_SERVER['HTTPS']) zwróć prawdę; } elseif ( isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT']) ) { return true; } zwróć fałsz; } function status_header( $status_header ) { $this->status_header = $status_header; zwróć $nagłówek_stanu; } function redirect_status( $status, $location ) { if ( $this->cache_redirects ) { $this->redirect_status = $status; $this->redirect_location = $lokalizacja; } return $status; } function configure_groups() { // Skonfiguruj thklient memcached if ( ! $this->remote ) if ( function_exists('wp_cache_add_no_remote_groups')) wp_cache_add_no_remote_groups(array($this->group)); if ( function_exists('wp_cache_add_global_groups')) wp_cache_add_global_groups(array($this->group)); } // Zdefiniowane tutaj, ponieważ timer_stop() wywołuje funkcję number_format_i18n() timer_stop($display = 0, $precision = 3) { global $timestart, $timeend; $mtime = mikroczas(); $mtime = eksploduj(' ',$mtime); $mtime = $mtime[1] + $mtime[0]; $koniec czasu = $mczas; $timetotal = $timeend-$timestart; $r = format_liczby($całkowity czas, $precyzja); if ( $wyświetlanie ) echo $r; zwróć $r; } function ob($wyjście) { if ( $this->anuluj !== false ) return $output; // PHP5 i obiektts znika przed buforami wyjściowymi? wp_cache_init(); // Pamiętaj, że $wp_object_cache został obciążony w wp-settings.php, więc musimy to powtórzyć. $this->configure_groups(); // Nie buforuj pustych stron, chyba że są to przekierowania HTTP $output = trim($output); if ( $output === '' && (!$this->redirect_status || !$this->redirect_location) ) return; // Skonstruuj i zapisz pamięć podręczną $cache = array( 'output' => $output, 'time' => time(), 'timer' => $this->timer_stop(false, 3), 'status_header' => $this->status_header, 'redirect_status' => $this->redirect_status, 'redirect_location' => $this->redirect_location, 'version' => $this->url_version ); if ( function_exists( 'headers_list' ) ) { foreach ( headers_list()as $header ) { list($k, $v) = array_map('trim', explode(':', $header, 2)); $cache['headers'][$k] = $v; } } elseif ( function_exists( 'apache_response_headers' ) ) { $cache['headers'] = apache_response_headers(); } if ( $cache['headers'] && !empty( $this->uncached_headers ) ) { foreach ( $cache['headers'] as $header => $value ) { if ( in_array( strtolower( $header ), $this->uncached_headers ) ) unset( $cache['headers'][$header] ); } } wp_cache_set($this->key, $cache, $this->group, $this->max_age + $this->seconds + 30); // Odblokuj regenerację wp_cache_delete("{$this->url_key}_genlock", $this->group); if ( $this->cache_control ) { header( 'Ostatnia modyfikacja: ' .gmdate( 'D, d M Y H:i:s', $cache['time'] ) 'GMT', true); header("Kontrola pamięci podręcznej: max-age=$this->max_age, must-revalidate", false); } if ( !empty($this->headers) ) foreach ( $this->headers as $k => $v ) { if ( is_array( $v ) ) header("{$v[0]}: {$ v[1]}", fałsz); else header("$k: $v", prawda); } // Dodaj trochę informacji debugowania tuż przed  if ( $this->debug ) { $tag = "\n"; if ( false !== $tag_position = strpos($output, '') ) { $tag = "\n"; $wyjście = substr($wyjście, 0, $pozycja_znacznika) . $tag . substr($wyjście, $pozycja_znacznika);} } // Przekaż dane wyjściowe do następnego modułu obsługi ob return $output; } } globalny $batcache; // Przekaż zmienną globalną, która może być tablicą ustawień zastępujących wartości domyślne. $batcache = nowa pamięć podręczna ($batcache); if (! zdefiniowano('WP_CONTENT_DIR') ) zwróć; // Nigdy nie przechowuj w pamięci podręcznej interaktywnych skryptów ani punktów końcowych interfejsu API. if ( in_array( basename( $_SERVER['SCRIPT_FILENAME'] ), array( 'wp-app.php', 'xmlrpc.php', 'ms-files.php', ) ) ) return; // Nigdy nie buforuj generatorów javascript WP if ( strstr( $_SERVER['SCRIPT_FILENAME'], 'wp-includes/js' ) ) return; // Nigdy nie buforuj, gdy obecne są dane POST. if ( ! pusty( $GLOBALS['HTTP_RAW_POST_DATA'] ) || ! pusty( $_POST ) ) return; // Nigdy nie przechowuj w pamięci podręcznej, gdy pliki cookie wskazują gościa zwolnionego z pamięci podręcznej. if ( is_array( $_COOKIE) && ! pusty( $_COOKIE) ) foreach ( array_keys ( $_COOKIE ) as $batcache->cookie ) if ( $batcache->cookie != 'wordpress_test_cookie' && ( substr( $batcache->cookie, 0, 2 ) == 'wp ' || substr( $batcache->cookie, 0, 9 ) == 'wordpress' || substr( $batcache->cookie, 0, 14 ) == 'comment_author' ) ) return; if ( ! include_once( WP_CONTENT_DIR . '/object-cache.php' ) ) return; wp_cache_init(); // Uwaga: wp-settings.php wywołuje funkcję wp_cache_init(), która niszczy utworzony tutaj obiekt. if (! is_object( $wp_object_cache) ) return; // Teraz, gdy ustawienia domyślne są ustawione, możesz chcieć użyć innych ustawień pod pewnymi warunkami. /* Przykład: jeśli Twoje dokumenty mają wariant mobilny (inny dokument obsługiwany przez ten sam adres URL), musisz poinformować Batcache o wariancji. W przeciwnym razie możesz przypadkowo buforować wersję mobilną i udostępniać ją użytkownikom komputerów stacjonarnych lub odwrotnie. $batcache->unique['mobile'] = is_mobile_user_agent(); */ /* Przykład: nigdy nie buforuj tego hosta if ( $_SERVER['HTTP_HOST'] == 'do-not-batcache-me.com' ) return; */ /* Przykład: buforuj wszystko na tym hoście niezależnie od poziomu ruchu if ( $_SERVER['HTTP_HOST'] == 'always-batcache-me.com' ) { $batcache->max_age = 600; // Cache przez 10 minut $batcache->sekundy = $batcache->times = 0; // Nie musisz czekać, aż n liczba osób uzyska dostęp do strony, buforuj natychmiast } */ /* Przykład: Jeśli czasami obsługujesz warianty dynamicznie (np. podświetlanie wyszukiwanych haseł odsyłających), prawdopodobnie nie chcesz buforować tych wariantów. Pamiętaj, że ten kod jest uruchamiany bardzo wcześnie w wp-settings.php, więc wtyczki nie zostały jeszcze załadowane. Otrzymasz błąd krytyczny, jeśli spróbujesz wywołać niezdefiniowaną funkcję. Dołącz teraz swoją wtyczkę lub zdefiniuj funkcję testową w tym pliku. if ( include_once( 'plugins/searchterm-highlighter.php') && referrer_has_search_terms() )zwrócić; */ // Wyłączone, jeśli ( $batcache->max_age < 1 ) return; // Upewnij się, że możemy inkrementować. Jeśli nie, wyłącz czujnik ruchu. if ( ! method_exists ( $ GLOBALS ['wp_object_cache'], 'incr' ) ) $batcache->times = 0; // Niezbędne, aby uniemożliwić klientom korzystanie z wersji z pamięci podręcznej po ustawieniu plików cookie logowania. Jeśli jest to problem, skomentuj go i usuń wszystkie nagłówki Last-Modified. header('Vary: Cookie', false); // Rzeczy, które definiują unikalną stronę. if (isset($_SERVER['QUERY_STRING'])) parse_str($_SERVER['QUERY_STRING'], $batcache->query); $batcache->keys = array( 'host' => $_SERVER['HTTP_HOST'], 'method' => $_SERVER['REQUEST_METHOD'], 'path' => ( $batcache->pos = strpos($_SERVER ['REQUEST_URI'], '?') ) ?substr($_SERVER['REQUEST_URI'], 0, $batcache->pos) : $_SERVER['REQUEST_URI'], 'query' => $batcache->query, 'extra' => $batcache->unikalny ); if ( $batcache->is_ssl() )$batcache->klucze['ssl'] = prawda; $batcache->configure_groups(); // Wygeneruj klucz batcache $batcache->key = md5(serialize($batcache->keys)); // Wygeneruj klucz pomiaru progu ruchu $batcache->req_key = $batcache->key . '_wymaganie'; // Pobierz batcache $batcache->cache = wp_cache_get($batcache->key, $batcache->group); // Czy buforujemy tylko często żądane strony? if ( $batcache->sekundy < 1 || $batcache->razy < 2) { $batcache->do = true; } else { // Nie znaleziono elementu w pamięci podręcznej lub jest gotowy do ponownego próbkowania ruchu pod koniec życia pamięci podręcznej? if ( !is_array($batcache->cache) ||time()>= $batcache->cache['time'] + $batcache->max_age - $batcache->sekundy) { wp_cache_add($batcache->req_key, 0, $batcache->grupa); $batcache->żądania = wp_cache_incr($batcache->req_key, 1, $batcache->grupa); if ( $batcache->requests >= $batcache->times)$batcache->do = prawda; w przeciwnym razie $batcache->do = false; } } // Odtwórz permalink z adresu URL $batcache->permalink = 'http://' . $batcache->klucze['host'] . $batcache->klucze['ścieżka'] . ( isset($batcache->keys['query']['p']) ? "?p=" . $batcache->keys['query']['p'] : '' ); $batcache->url_key = md5($batcache->permalink); $batcache->url_version = (int) wp_cache_get("{$batcache->url_key}_version", $batcache->grupa); // Jeśli dokument został zaktualizowany, a my jako pierwsi to zauważymy, zregeneruj go. if ( $batcache->do !== false && isset($batcache->cache['wersja']) && $batcache->cache['wersja'] <$batcache->url_version) $batcache->genlock = wp_cache_add ("{$batcache->url_key}_genlock", 1, $batcache->grupa); // Czy znaleźliśmy stronę z pamięci podręcznej, która jeszcze nie wygasła? if ( isset($batcache->cache['time']) && ! $batcache->genlock && time() < $batcache->cache['time'] + $batcache->max_age ) { // Problemprzekierowanie, jeśli buforowane i włączone, jeśli ( $batcache->cache['redirect_status'] && $batcache->cache['redirect_location'] && $batcache->cache_redirects ) { $status = $batcache->cache['redirect_status']; $location = $batcache->cache['redirect_location']; // Z vars.php $is_IIS = (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false ); if ( $is_IIS ) { header("Odśwież: 0;url=$lokalizacja"); } else { if ( php_sapi_name() != 'cgi-fcgi' ) { $texts = array( 300 => 'Wiele opcji', 301 => 'Przeniesione na stałe', 302 => 'Znaleziono', 303 => 'Zobacz Inne', 304 => 'Niezmodyfikowane', 305 => 'Użyj proxy', 306 => 'Zarezerwowane',307 => 'Tymczasowe przekierowanie', ); $protokół = $_SERVER["SERVER_PROTOCOL"]; if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol ) $protocol = 'HTTP/1.0'; if ( isset($texts[$status]) ) header("$protokół $status " . $texts[$status]); else header("Znaleziono $protocol 302"); } header("Lokalizacja: $lokalizacja"); }             Wyjście; } // Problem „304 Not Modified” tylko wtedy, gdy daty dokładnie się zgadzają. if ( $batcache->cache_control && isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); if ( isset($batcache->cache['headers']['Last-Modified']) ) $batcache->cache['time'] = strtotime( $batcache->cache['headers']['Last- Zmodyfikowane'] ); if ( $batcache->cache['time'] ==$since ) { header('Ostatnia modyfikacja:' . $_SERVER['HTTP_IF_MODIFIED_SINCE'], true, 304); Wyjście; } } // Użyj czasu oszczędzania pamięci podręcznej dla ostatniej modyfikacji, abyśmy mogli wydać „304 Not Modified” if ( $batcache->cache_control ) { header( 'Last-Modified: ' .gmdate( 'D, d M Y H:i: s', $batcache->cache['time']) 'GMT', true ); header('Cache-Control: max-age='. ($batcache->max_age - time() + $batcache->cache['time']) .', must-revalidate', true); } // Dodaj trochę informacji debugowania tuż przed  if ( $batcache->debug ) { if ( false !== $tag_position = strpos($batcache->cache['output'], '' ) ) { $tag = "\n"; $batcache->cache['output'] = substr($batcache->cache['output'], 0, $tag_position) . $tag . substr($batcache->cache['wyjście'], $tag_position); } } if ( !empty($batcache->cache['headers']) ) foreach ( $batcache->cache['headers'] as $k => $v ) header("$k: $v", true ); if ( !empty($batcache->headers) ) foreach ( $batcache->headers as $k => $v ) { if ( is_array( $v ) ) header("{$v[0]}: {$v [1]}", fałsz); else header("$k: $v", prawda); } if ( !empty($batcache->cache['status_header'])) header($batcache->cache['status_header'], true); // Czy słyszałeś kiedyś grzechotanie śmierci? die($batcache->cache['wyjście']); } // Nie spełniłeś minimalnego warunku? if ( !$batcache->do && !$batcache->genlock ) return; $wp_filter['status_header'][10]['batcache'] = array( 'function' => array(&$batcache, 'status_header'), 'accepted_args' => 1 ); $wp_filter['wp_redirect_status'][10]['batcache'] = array( 'function' => array(&$batcache, 'redirect_status'), 'accepted_args' => 2 ); ob_start(tablica(&$batcache, 'ob')); // Bezpieczniej jest pominąć końcowy znacznik zamykający PHP.


title: Liczba wtyczek multimedialnych rt nie działa w shortcode

text: Użyłem wtyczki rtMedia w mojej witrynie buddypress. Użyłem krótkiego kodu `<?php echo do_shortcode('[rtmedia_gallery global="true" media_type="all" count="4" loadmore="false"]'); ?>` aby wyświetlić elementy galerii multimediów. Ale liczenie i ładowanie więcej nie działa. Pokazuje teraz więcej niż 4 przedmioty. Jak to naprawić?


title: Wordpress functions.php - Uruchamianie określonego użytkownika w trybie online

text: One Trick Pony opublikował świetny scenariusz, który staram się dostosować do moich potrzeb. Rejestracja w mojej witrynie jest ograniczona. Jest tylko jeden użytkownik, redaktor. Pomysł polega na tym, aby mieć wtyczkę czatu, która byłaby włączana i wyłączana w zależności od tego, czy redaktor jest online, czy nie, ponieważ będzie odpowiadał na czat, a jeśli czat jest włączony, a edytor offline, zajmuje tylko miejsce. Kod: define('EDITOR_USER_ID', 2); // tutaj twój identyfikator użytkownika edytora add_action('wp', 'update_online_users_status'); function update_online_users_status(){ if(is_user_logged_in()){ // pobierz listę użytkowników online if(($logged_in_users = get_transient('users_online')) === false) $logged_in_users = array(); $bieżący_użytkownik = wp_get_bieżący_użytkownik(); $bieżący_użytkownik = $bieżący_użytkownik->ID; $current_time = current_time('znacznik czasu'); if(!isset($logged_in_users[$current_user]) || ($logged_in_users[$current_user] < ($current_time - ($time_limit * 60)))){ $logged_in_users[$current_user] = $current_time; set_transient('users_online', $zalogowani_in_users, 1 * 60); } } } add_action('admin_init', 'handle_chat'); function handle_chat(){ if(is_user_online(EDITOR_USER_ID)){ if(!is_plugin_active('online-chat/online-chat.php')) active_plugins('online-chat/online-chat.php'); } else { if(is_plugin_active('czat-online/czat-online.php')) deactivate_plugins('czat-online/czat-online.php'); } } function is_user_online($user_id) { // pobierz listę użytkowników online $logged_in_users = get_transient('users_online'); // online, jeśli on jest na liście, a ostatnia aktywność była mniej niż 15 minut temu, zwróć isset($logged_in_users[$user_id]) && $logged_in_users[$user_id] > (current_time('timestamp') - (1 * 60)); } **Problemy nadal pozostały** : Włączanie/wyłączanie czatu powinno być natychmiastowe, bez konieczności czekania 15 minut po wylogowaniu/zalogowaniu się edytora, więc zmniejszyłem tę wartość do 1 Powinno być init zamiast admin_init, aby mogło być włączone z przodu. Ale kiedy to zmienię, pojawia się błąd: * **Błąd krytyczny: Wywołanie niezdefiniowanej funkcji is_plugin_active() w /home/mgdownhill/www/wp-content/themes/criatweb/functions.php w wierszu 412*** 412- > if(!is_plugin_active('czat-online/czat-online.php')) active_plugins('czat-online/czat-online.php'); **Moje pytanie** : Czy istnieje sposób, aby zrobić to natychmiast, bez przeciążania serwera? Na tym samym serwerze będzie wiele stron internetowych, które będą uruchamiać ten skrypt czatu.


title: Wirtualna strona z formularzem rejestracyjnym

text: Praca nad wtyczką, która ma zapewnić rejestrację na interfejsie użytkownika, aby umożliwić użytkownikom rejestrację. Staram się stworzyć wirtualną stronę, która wyświetli formularz. Próbuję utworzyć adres URL, taki jak następujący http://example.com/plugin_register/register Odnosiłem się do, Jak utworzyć „wirtualną” stronę w WordPressie Ale nie udało mi się sprawić, by działała ze zmienioną zmienną zapytania, np. jeśli zamienię `wpse9870_api` na `plugin_register`, przekierowuje do strony głównej lub strony 404. Odnosi się również do Rewrite API/add rewrite rule Ale nie udało mi się również uzyskać tej pracy. Moja wtyczka wygląda następująco: add_action( 'init', 'wpse9870_init_internal' ); function wpse9870_init_internal() { add_rewrite_rule( '^my-api.php$', 'index.php?wpse9870_api=1', 'top' ); //add_rewrite_rule('^nutrition/?','index.php?wpse9870_api=1','top'); } add_filter( 'query_vars', 'wpse9870_query_vars' ); funkcja wpse9870_query_vars( $query_vars) { $query_vars[] = 'wpse9870_api'; zwróć $query_vars; } add_action( 'parse_request', 'wpse9870_parse_request' ); function wpse9870_parse_request( &$wp ) { if ( array_key_exists( 'wpse9870_api', $wp->query_vars ) ) { include(realpath(plugin_dir_path(__FILE__).'index.php')); //echo katalog_wtyczek_ścieżka( __PLIK__ ); Wyjście(); }         zwrócić; }


title: problem z wieloma kategoriami i bułką tartą

text: Pozwól, że wyjaśnię mój problem. Mam ten post, który używa wielu kategorii... a kategorie są wyświetlane jako bułka tarta Czy istnieje sposób, w jaki mogę wyświetlić 1 konkretne drzewo? przykład Mam `gra > koszykówka > drużyny > drużyna A > gracze > gracz1` i `ogłoszenie > nowi gracze > gracz1` Teraz, kiedy przeglądam grę, przechodząc w głąb gracza 1, będę miał ten pierwszy przykład jako okruszek dla tej strony. Ale nawigacja po ogłoszeniu zagłębiającym się w player1 również da taki rodzaj okruszka. Czy jest sposób na zdobycie drugiej bułki tartej? nawet używając `/%category%/%postname%/` jako bezpośredniego linku, adres URL będzie używał tylko jednego konkretnego... jak `gra/koszykówka/zespoły/drużyna A/gracze/gracz1/` cóż, to tak, 1st: ` ogłoszenie/` kliknięcie nowych graczy: `ogłoszenie/nowi gracze/` po kliknięciu player1: `gra/koszykówka/drużyny/drużyna A/gracze/gracz1/` dlaczego nie mogę kontynuować jako `ogłoszenie/nowi gracze/gracz1/` ? i `ogłoszenie > nowi gracze > gracz1` ?


title: Utwórz podstronę - filtruj listę stron nadrzędnych

text: Mam tutaj stronę internetową z dużą ilością treści i treścią, w której jest niezbędna do tworzenia stron w hierarchii. Ale niewygodne jest przeglądanie listy rozwijanej w administracji z wieloma stronami. Chodzi mi więc o to - w adminie w tej chwili tworzę/edytuję stronę i muszę wybrać stronę nadrzędną z listy, chcę jakoś filtrować lub ograniczać lub przeszukiwać listę możliwych stron nadrzędnych. Dziękuję Ci!


title: Dostęp edytora do menu: brak niestandardowego typu postu

text: Użyłem tego kodu; $roleObject = get_role( 'edytor' ); if (!$roleObject->has_cap( 'edit_theme_options' ) ) { $roleObject->add_cap( 'edit_theme_options' ); }, aby dodać dostęp do menu dla redaktorów. Mam niestandardowy wpis typu „Masterclasses”. Pojawia się on poprawnie na stronie edycji Menu administratora, ale nie pojawia się na stronie edycji Menu redaktora. Jak to dodać?


title: Typ posta => Dowolna zagadka

text: Mam kilka zwykłych postów i stron w zwykłej kategorii o nazwie „Polecane”. Zainstalowałem również wtyczkę o nazwie „Event Organizer”, która tworzy własny niestandardowy typ posta o nazwie „Event” i ma własny interfejs do tworzenia kategorii specyficznych dla wtyczki. W każdym razie to, co stworzyłem, to podstawowy suwak podświetlenia za pomocą zapytania, aby pobrać polecane posty i strony kategorii (włączyłem kategorie na moich stronach), a także posty o wydarzeniach. Oto zapytanie: $args=array( 'post_type' => 'any', 'showposts' => $featured_num, 'order' => 'DESC', 'tax_query' => array( 'relation' => 'LUB ', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => 'featured' ), array( 'taxonomy' => 'event-category', 'field' => 'slug', 'terms' => 'polecane-zdarzenie', ) ) ); $my_query = nowe WP_Query($args); Problem polega na tym, że wszystko działa dobrze w moim lokalnym środowisku testowym, ale absolutnie odmawia pracy na moim hoście internetowym. W moim lokalnym środowisku testowym zarówno „polecane” posty, jak i strony są pobierane _TAK RÓWNIEŻ_ jak niestandardowe posty zdarzeń. Na moim hoście internetowym wyświetlane są tylko wpisy o wydarzeniach. Jeśli przełączę "typ posta" na "array('post','page')" otrzymuję **polecane** posty i strony, ale tracę posty o zdarzeniach.


title: Twórz witrynę programowo dla WPMU

text: Mój klient ma stronę, na której jest blog WP + forum vBulletin. Teraz chce zezwolić użytkownikom vb na posiadanie własnego bloga, modyfikując obecny blog WP do sieci WPMU. Więc chcę stworzyć przycisk, który może być kliknięty przez użytkownika vb i nowa strona zostanie dla niego utworzona w sieci. Jak mogę programowo utworzyć nową witrynę dla sieci WPMU?


title: Jak uzyskać najnowszą stronę (nie post) Użytkownika i wyświetlić treść?

text: Próbowałem uzyskać najnowszą stronę, a nie post, według identyfikatora autora i wyświetlić ją na stronie. Powodem, dla którego musi to być strona, a nie post, jest to, że użytkownik będzie publikował tylko jedną stronę i całą masę postów. Należy to również robić dynamicznie i opierać się na aktualnie zalogowanym użytkowniku. Otrzymałem następujący kod: <?php $user_id = get_current_user_id(); echo $identyfikator_użytkownika; $args = array( 'post_type' => 'strona', 'post_status' => 'opublikowane', 'posts_per_page' => 1, 'autor' => $user_id ); $moje_posty = get_posts( $args ); foreach ( $my_posts jako $post ): setup_postdata( $post ); ?> <?php tytuł_(); ?> <?php endforeach; ?> Wszystko, co robi, to zwraca tytuł bieżącej strony (testowanie z the_title(); zostanie zastąpione przez the_content(); gdy zacznie działać). Rozglądałem się za rozwiązaniami, ale nie mogę ich znaleźć. Chciałabym trochę pomóc w tym.


title: wp_deregister_script i wp_dequeue_script nie działają w Chrome

text: Pracuję nad tematem potomnym i mam do czynienia z dziwnym problemem. Wyrejestrowuję i usuwam z kolejki skrypty w motywie potomnym functions.php, działa dobrze w Mozilla Firefox i innych przeglądarkach, ale nie działa w Chrome. Pliki skryptów są nadal widoczne w chrome, nawet po wyczyszczeniu pamięci podręcznej przeglądarki. ale skrypt custom.js, który umieściłem w kolejce, działa dobrze w Chrome. add_action( 'wp_enqueue_scripts', 'as_scripts_basic', 100); function as_scripts_basic() { wp_deregister_script('punkty drogi'); wp_deregister_script('punkty-przyklejone'); wp_dequeue_script('punkty'); wp_dequeue_script('punkty-przyklejone'); wp_enqueue_script('dziecko-niestandardowe', get_stylesheet_directory_uri() . '/js/custom.js', '', '', TRUE); }


title: Używanie skrzypiec TinyMCE do filtrowania węzłów, aby dodać atrybut id do kotwic

text: Chciałbym edytować kod anchor-makera w TineMCE, aby wkleił on do kodu następujący wiersz: `<a name="#ANCHOR" id="#ANCHOR">` zamiast: `<a name ="#ANCHOR">` Gdzie znajdę odpowiedni plik z ustawieniami dla tych rzeczy? Oto mój kod: <script type="text/javascript"> tinyMCE.init({ // Opcje ogólne mode : "textareas", theme : "advanced", plugins : "autolink,lists,spellchecker,pagebreak,style,layer tabela,zapisz,advhr,advimage,advlink,emocje,iespell,inlinewyskakujące okienka,wstaw datetime,podgląd,media,wyszukiwaniezamień,drukuj,menu kontekstowe,wklej,kierunkowość,pełny ekran,nieedytowalne,wizualneznaki,niełamliwe,xhtmlxtras,szablon,menedżer obrazu,menedżer plików, // Opcje motywu theme_advanced_buttons1 : "zapisz,nowy dokument,|,pogrubienie,kursywa,podkreślenie,przekreślenie,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "wytnij, skopiuj, wklej ,wklej tekst,wklej,|,wyszukaj,zamień,|,bullist,numlist,|,przesunięcie,wcięcie,cytat blokowy,|,cofnij,ponownie,|,link,odłącz,kotwica,obraz,oczyszczanie,pomoc,kod,|,wstawdatę ,czas wstawiania,podgląd,|,kolor wstępny,kolor tła", theme_advanc ed_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen", theme_advanced_buttons4 : "wstaw warstwę ,do przodu,cofnij się,bezwzględny,|,rekwizyty stylu,sprawdzanie pisowni,|,cytuj,skrót,skrót,del,ins,atrybuty,|,znaki wizualne,nieprzerywające,szablon,cytat blokowy,podział strony,|,wstawplik,wstawobraz", theme_advanced_toolbar_location : "do góry ", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, width: "100%", height: "400", init_instance_callback: function(ed) { ed.serializer.addNodeFilter('a', function( węzły) { tinymce.each(węzły, funkcja(węzeł) { node.attr('id', node.attr('nazwa')); }); }); } }); </script> <form method="post" action="dump.php"> <textarea name="content"></textarea> </form> Myślę, że używam TincyMCE Advanced w wersji 3.5.8. Wszystko, co widzę w całym kodzie źródłowym strony „Edytuj post” w najnowszej wersji WordPressa, to rzeczy tinyMCEPreInit... i próbowałem dołączyć zawartość skrzypiec do tablicy: init_instance_callback: function(ed) { ed.serializer .addNodeFilter('a', function(węzły) { tinymce.each(węzły, function(węzeł) { node.attr('id', node.attr('nazwa')); }); }); }


title: Przenieś jQuery na dół strony, zachowując WordPress jQuery

text: Chcę przenieść jQuery na dół strony w moim motywie, aby przyspieszyć ładowanie. Wcześniej robiłem to, zastępując ją wersją CDN Google, ale powiedziano mi, że to zła rzecz. Jak mogę wyrejestrować i ponownie zarejestrować skrypt WordPress jQuery i przenieść go na dół bez powodowania żadnych problemów?


title: Dlaczego moja witryna programistyczna offline i witryna internetowa na żywo zachowują się inaczej?

text: Mam dwie wersje mojej witryny - jedną aktywną, a drugą witrynę programistyczną wykorzystującą DeskTopServer. Zajmuję się stroną deweloperską - dodawaniem/edycją postów itp. oraz wprowadzaniem zmian w bazie danych WP i zabawą z szablonami, które są w motywie potomnym. Okresowo usuwam aktualną bazę danych WP i zastępuję ją rozwojową. Jednocześnie dbam o synchronizację motywów, dodając nowe szablony i zastępując zmienione. Jedyną różnicą między tymi dwiema witrynami (o której jestem świadomy) jest to, że niektóre wtyczki są instalowane i aktywowane w witrynie programistycznej, których nie ma w witrynie aktywnej. Te wtyczki robią tylko rzeczy "back-endowe" - tj. mają do czynienia z czynnościami administracyjnymi, aby ułatwić mi życie podczas pracy z pulpitu nawigacyjnego. Chociaż są one włączone, gdy eksportuję bazę danych WP do działającej witryny, gdy już tam są, są automatycznie dezaktywowane, ponieważ nie istnieją. Dlatego nie powinno to (i o ile wiem do tej pory nie ma) wpływać na działanie witryny na żywo. Właśnie dodałem nową taksonomię niestandardową i nowy szablon do wyświetlania niestandardowych postów z tą taksonomią. Działa to doskonale na stronie na żywo, ale na stronie deweloperskiej generuje błąd 404. Próbowałem dezaktywować wtyczki na stronie programistycznej, których nie ma na żywo, aby były one całkowicie identyczne, ale to nie rozwiązuje problemu. Mam jedną wtyczkę - aktywną w obu witrynach - która czasami prowadzi do dziwnych rzeczy, ale ma funkcję „czystej pamięci podręcznej”, która po wyczyszczeniu zawsze usuwała również wszelkie problemy w przeszłości. Wtyczka jest tak integralną częścią witryny, że nie mogę jej dezaktywować bez zerwania większości szablonów itp. (Tworzy niestandardowe typy postów, niestandardowe pola itp.) Jeśli przełączę się na standardowy motyw, witryna deweloperska nadal prowadzi do błędu 404, aktywna strona nadal działa. Strona na żywo jest tutaj, ponieważ nie mogę pokazać również strony programowania offline, link prawdopodobnie nie pomaga! To nie jest katastrofa, przynajmniej jest to właściwa droga. Mogę, jeśli muszę, żyć z lekką czkawką na stronie deweloperskiej, ale wkurza mnie to, że nie jestem w stanie zrozumieć, dlaczego tak się dzieje. Czy ktoś ma jakieś pomysły?