PHP ile WordPress’te yayın yayınlamayı nasıl durdurabilirim
Son kez, gerekli öne çıkan görüntü eklentisinin WordPress “Posting” i nasıl durdurduğundan bahsettik, böylece JavaScript’e bağlı özelliklerin görüntüleri olmadan yayınlanmadı.Yaklaşım sınırlıdır (birkaç yorumcu tarafından gösterildiği gibi) kullanıcılar JavaScript’i devre dışı bırakabilir ve WordPress, kullanıcıların web tarayıcısındaki WordPress yönetici arayüzünü tıklamaları dışında bazen yayınları yayınlar.Bu hafta, PHP’de yazılmış eklentinin, üstün görüntüler olmadan yayınlanan WordPress içeriğini önlemeye hizmet eden kısımlarına odaklanıyoruz.Ve bir kez daha, video bu içeriği derlememin ilk yolu, bu yüzden bu hafta okumayı izlemekten ve kaçırmaktan çekinmeyin:
https://www.youtube.com/watch?v=vcfqfdhetcg
(Son kez olduğu gibi, iyi takip edebilmek için 720p çözünürlüğe veya daha iyisine sahip tam bir ekrana ihtiyacınız olabilir. Yine, bunun için özür dilerim.) Okuma daha iyi öğrenme şeklinizse, lütfen okumaya devam edin. Üç temel şeyi tartışacağız: Gönderiyi WordPress’te yayınlanmaması için nasıl durdurabilirsiniz, üstün görüntülerin PHP’de nasıl ekli ve yeterince büyük olup olmadığını nasıl kontrol edebileceğiniz ve JavaScript dosyalarını şartlı bir şekilde nasıl kullanabileceğinizi kontrol edebilirsiniz. tavır. Mesajların WordPress’te yayınlanmasını nasıl durdurursunuz Başlangıçta bu eklenti için WordPress’te yayınlamayı nasıl bıraktığımı hatırlamıyorum, ancak eklentinin şimdi yaptığından daha karmaşık ve daha az güçlü olduğunu biliyordum. Çünkü bunun gibi durumlar için transition_post_status adı verilen çok rahat WordPress kancaları olduğunun farkında değilim. Eklentide nasıl kullanılacağı aşağıda açıklanmıştır: add_ace (‘transition_post_status’, ‘rfi_guard’, 10, 3); RFI_GUARD işlevi ($ new_status, $ eski_status, $ post) {if ($ new_status === ‘yayın’ && rfi_should_stop_post_publishing (wp_publishing (wp_die (rfi_get_waring_warning_message ()); }} Farkında gereken ilk şey, transition_post_status’un bir eylem olduğu ve aslında ondan üç argüman yakaladığımızdır (eylem için daha az yaygındır): geçiş-post statüsü, geri dönüş ve tüm $ POST nesneleri için söz konusu içerik. Üçünü almak için Add_ace için dördüncü argümanı devam ettirdik. Unutursanız, add_action argümanı:
İlişkilendirdiğiniz eylemin adı.
Eylem etkinleştirildiğinde çalıştırmak istediğiniz işlev adı (veya gerçek). Bağımlılık işlevinizin önceliği (çalıştırma siparişi).
İşleviniz tarafından beklenen argüman miktarı (#2).
Birinci ve üçüncü argümanları istediğim için ikincisi de tutuklandı. RFI_GUARD işlevinin kendisinde, WordPress’in istemediğimiz yayınları yayınlamasını nasıl durdurduğumuzu görüyoruz: Sadece WP_DIE ile Hard adlı her şeyi yapmasını durduruyoruz. Süreci sadece yayının yayınlanmasını durdurmak için “öldürmek” oldukça sert mi? Belki, ama yayınlanmadığından emin olmanın en iyi yolu bu.
Eklenti, Yukarıdaki RFI_GUARD işlevinin yayınlanmasından gönderiyi durdurduğunda, bazı şeyler doğruysa yalnızca WP_DIE () ‘a ulaşarak yayınlamayı durdurur. Birincisi, gönderiye geçişin durumunun, ‘yayınlama’ gerçek dizisi olmasıdır. Bu, yalnızca bir gönderinin ‘yayınlanacağı’ – daha önce durum ne olursa olsun – onu durduracağımız anlamına gelir. Bunun nedeni, bazı kişilerin dahili olarak bir taslak mesajı olabilir ve yazar bunu yazmayı bitirdikten sonra, örneğin, düzenli olarak düzenleyiciye giderler. Gereksiz yerlerde kaos yapmamak için, eklenti geçişte hiçbir şey yapmaz.
Bu durumun daha ilginç kısmı ikinci yarısı, rfi_should_stop_post_publishing. Bu işleve bakalım: işlev rfi_should_stop_post_publishing ($ post) {$ is_watched_post_type = rfi_is_supported_post_type ($ post); $ IS_AFT_ENFORCANCE_TIME = RFI_IS_IN_ENFURCUCHANCE_WINDOW ($ POST); $ büyük_enghough_image_attached = rfi_post_has_large_enghough_image_attached ($ yazı); if ($ IS_AFF_ENFURCUCE_TIME && $ IS_WATCHED_POST_TYPE) {return! $ Larg_enghough_Image_attached; } return false; } Bu işlevin kendisi, geçici üç değişken örnek oluşturmak için sonraki üç işlevi çağırır (temel amacı koşulları daha kolay hale getirmektir). Temel olarak, kod “Bu yazı yayın tarihi, icra değişikliklerinden sonra düşüyor mu ve bu yazı izlediğimiz yazı türünden nedir?” İcra penceresi, eklentinin bazı sitelerin WordPress’teki üstün görüntü özelliklerinden daha eski olabileceği gerçeğini nasıl ele aldığı ve eski yayınları ona üstün görüntüler eklemeden düzenlemek isteyebilirler. (Gerekirse daha fazla ayrıntı verilebilir …) Posta türü sorusu, eklenti varsayılan olarak yalnızca “posta” yazı türünü işlerse de, “referanslar” üzerinde de kullanılabilir.
Bu koşulda, bir ünlem işareti göreceksiniz. (Programcı sembolü okurken “patlama” demeyi sever.) Negatif veya ters çevirir, bu nedenle $ büyük_enghough_featured_image true ise, yanlış döndürme işlevi ve tersi. Bunun nedeni, işlevinin yayının yayınlanmasının durdurulup durdurulmayacağı ile ilgili olmasıdır. Oldukça büyük olan üstün görüntü, yayınlamanın durdurulmadığı anlamına gelmelidir. Yeterince büyük olmayan bir resim, durdurulması gerektiği anlamına gelir. Nasıl tanınır Posta nesnesi yeterince büyük bir görüntüye sahipse, en önemli işlev, üstün görüntünün takılacak kadar büyük olup olmadığını belirleyen işlevdir. Bu şöyle görünüyor: işlev rfi_post_has_large_enghough_image_attached ($ post) {$ image_id = get_post_thumbnail_id ($ post-> id); if ($ image_id === null) {return false; } $ image_meta = wp_get_attachment_image_src ($ image_id, ‘full’); $ width = $ Image_meta [1]; $ Height = $ Image_meta [2]; $ minimum_size = get_option (‘rfi_minimum_size’); if ($ width> = $ minimum_size [‘width’] && $ yükseklik> = $ minimum_size [‘yükseklik’]) {return true; } return false; } RFI_SHOULD_STOP_POST_PUBLISH’de adlandırılan diğer tüm işlevler gibi, bu işlev önerilen soruları cevaplamak için basit doğru veya yanlış değeri geri yükler. Nasıl yapılır? İlk olarak get_post_thumbnail_id ile üstün bir görüntü almaya çalıştı. (WordPress’te, “Üstün Görüntüler” ile ilişkili işlevlerin genellikle adında bir küçük küçük resimleri var. Biraz birkaç dakikaya alışkınsınız, ancak bu, fikrin WordPress’e ilk nasıl girdiğine dair bir eser.)
Dolayısıyla, görüntüler için sayısal kimlik bulunursa, null (boş) olmayan bir sayı olacaktır.Boşsa, yanlış olanı döndürürüz, çünkü ilgili gönderinin hiç üstün bir resmi yoktur.Gerçekten üstün bir resmimiz varsa, devam ederiz.Görüntünün boyutuna erişmek için wp_get_attachment_image_src işlevini kullanıyoruz.Bu daha sonra son sınavı yapmamızı sağlar, bu da genişlik ve yüksekliği ne kadar genişlik ve yükseklik için depolanan eklentinin ayarlarıyla karşılaştırmaktır.Her iki boyut eşit veya daha büyükse, doğru döneriz.Yanlış değilse.
WordPress’te koşullu olarak javascript nasıl sıraya girilir (benim için) eklentiler için PHP hakkındaki son ilginç şey, son kez tartıştığımız JavaScript dosyasıyla ilgilidir. JQuery’yi olabildiğince basit tutmak için, PHP sınavında yapmamız gereken “icra penceresi” ve “post tipi” çevresindeki onay işaretini ortadan kaldırıyorum. Bu, JavaScript’i zorlamamız gerektiğinde sıraya koyduğumuz gerçeğiyle etkinleştirildi. Nasıl? Şuna benzeyen enqueueUing bloğu ile: add_action (‘admin_enqueue_scripts’, ‘rfi_enqueue_dit_screen_js’); işlev rfi_enqueue_dit_screen_js ($ kanca) {global $ post; if ($ hook! == ‘post.php’ && $ hook! == ‘New-New.php’) {return; } if (rfi_is_supported_post_type ($ post) && rfi_is_in_in_enforme_window ($ post)) {wp_register_script (‘rfi-admin-js’, plugins_url (‘ /request-feeured-image’); wp_enqueue_script (‘rfi-admin-js’); $ minimum_size = get_option (‘rfi_minimum_size’); WP_LOCALICH_SCRINK (‘RFI-ADMIN-JS’, ‘Geçmiş Fromserver’, // JS için değer dizisi);
}} İlk bölüm, alakasız bir sayfada komut dosyasını bırakmamamızı sağlayan basit bir incelemedir. İkinci blok, rahat okunabilirliği artıran geçici değişkenler kullanılmadan bile yukarıdaki koşullardan aynı tanıdık işlevi kullanır. Ancak temel olarak gereksinimler aynıdır: Yazdığımız önceki PHP son görüntü boyutu kontrolüne ulaşırsa, komut dosyasını bıraktık. Değilse, o zaman yapmıyoruz. Bu mantıklı: JavaScript’in rolü, kullanıcıya PHP sınavından daha iyi bir deneyim sağlamaktır, ancak temel olarak aynı işi tamamladı. Ve işte böyle çalışıyor. Artık biliyorsunuz … İki hafta önceki makalelerle birleştiğinde, artık gerekli özellikli görüntü eklentisinin tüm ilginç özelliklerini anlayabilirsiniz. Bazı daha sıkıcı detaylar (sıkıcı) ortadan kaldırılır – Ayarlar sayfaları, çeviri detayları, bazı işlevler ve özellikler daha sakin olan – ancak taslak sizin için açık olmalıdır. Bu eklenti ile aynı şeyi yapan bir eklenti yazmak için asla bir nedeniniz olmayabilir, ancak umarım nasıl çalıştığının araştırılması sizin için aydınlatıcı ve faydalıdır. Mutlu Hacking! Kredi Resmi: SpaceX, Unsplash aracılığıyla