it-swarm.asia

Functions.php dosyanız için en iyi kod koleksiyonu

Lütfen soru veya cevabın sol tarafındaki YUKARI okunu tıklatarak soru ve yararlı bulduğunuz cevapları oylayın.

Şu anda bu yazıyı görüntüleyen pek çok diğerinde olduğu gibi, wordpress becerilerimi öğrenmek ve geliştirmek için çeşitli bloglar, forumlar ve tartışma grupları okudum. Geçtiğimiz 12 ay boyunca, eklentileri kullanmak yerine functions.php dosyama kod ekleyerek görevimi yerine getirme görevindeyim. Eklentilerin birçok durumda çok faydalı olduğu konusunda hemfikir olmama rağmen, deneyimim, bir eklentinin mevcut olmasına rağmen kullanım vakalarının% 90'ında, aslında onu kullanmanın gereksiz komplikasyonlar ve uyumluluk sorunları yaratabileceğini kanıtladı. Ek olarak, çoğu durumda bu tür eklentiler, istemediğim veya ihtiyaç duymadığım menüleri ve diğer yönetici öğelerini ekledi.

Çoğu zaman, eklentilerin kodunu analiz ederek, istediğim kod parçasını çıkarabildiğimi ve onu functions.php koduma kodladığımı fark ettim. Bu bana gereksiz unsurları eklemek zorunda kalmadan ihtiyacım olan işlevselliği sağladı.

Bu yüzden, bu yazının amacı, sizi, okuyucu/yönetici/geliştiriciyi, benimle ve diğerleriyle burada yararlı bulduğunuz ve WordPress kullanmadan genişletmek veya geliştirmek için temanızın function.php dosyasına eklediğiniz kod bitlerini paylaşma girişimidir. bir eklenti.

Buraya bir yanıt gönderdiğinizde lütfen her bir kod parçasına bir başlık verin, hangi wordpress'in hangi sürümüyle uyumlu olduğunu bildiğinizden emin olun, işlevini en iyi şekilde açıkladığını düşündüğünüz açıklamaları ekleyin ve (varsa) orijinaline bir bağlantı ekleyin. Eklentiyi veya bilgiyi bulduğunuz kaynak.

Tüm cevaplarınızı dört gözle bekliyorum ve tabii ki buldukça sürekli olarak kendi yeni bulgularımı ekleyeceğim.

327

Bağlantıları Sil Menü Öğesi

WordPress kurulumlarımın çoğu, kullanıcıların 'Bağlantılar' menü öğesine erişmesini gerektirmiyor. Bu işlev görünümden kaldırır.

add_action( 'admin_menu', 'custom_admin_menu' );
function custom_admin_menu() 
{
    global $menu;
    // var_dump($menu); // use this to identify the key for the menu item you want to remove
    unset( $menu[15] ); //key 15 is links
    if ( !current_user_can('manage_options') ) { unset( $menu[75] ); } //key 75 is tools ... but only for non super admins
}
1
Philip Downer

Yönetici Olmayanlar İçin Şimdi Yükseltmeyi Devre Dışı Bırak

Aslında bu kodu kullanmayan büyük bir hayranıyım. Bunun yerine, müşterilerin kendi WordPress yüklemelerini güncellemelerine izin vermeyi tercih ediyorum. Bu, siteyi güncel tutmaya yardımcı olur ve beni daha iyi kod yazmaya zorlar.

if ( !current_user_can( 'manage_options' ) ) {
  add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
  add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}
1
Philip Downer

Arşiv sayfasına özel gönderi türü ekle

function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
 'post', 'your-custom-post-type-here'
            ));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
1

Giriş sayfası ve Yönetici için Özel Logolar

/*-----------------------------------------------------------------------------------*/
/*  Custom logos
/*-----------------------------------------------------------------------------------*/
function custom_admin_logo() {
    echo '
        <style type="text/css">
            #header-logo { background-image: url('.get_bloginfo('template_directory').'/path/to/images/admin-logo.png) !important; }
        </style>
    ';
}
add_action('admin_head', 'custom_admin_logo');

function custom_login_logo() {
    echo '<style type="text/css">
        h1 a { background-image:url('.get_bloginfo('template_directory').'/path/to/images/login-logo.png) !important; }
    </style>';
}

add_action('login_head', 'custom_login_logo');
1
Daniel Sachs

Yönetici içindeki "Mesajlar" menü isminin istediğini değiştir (örneğin, "Makaleler")

// hook the translation filters
add_filter('gettext','change_post_to_article');
add_filter('ngettext','change_post_to_article');

function change_post_to_article( $translated ) {
$translated = str_ireplace('Post','Article',$translated );// ireplace is PHP5 only
return $translated;
}

Krediler için smashingmagazine.com

1
dani

Sonraki ve önceki bağlantılara özel bir sınıf ekle

add_filter('next_posts_link_attributes', 'posts_link_attributes');
add_filter('previous_posts_link_attributes', 'posts_link_attributes');
function posts_link_attributes(){
    return 'class="styled-button"';
    }
1

Yayınlandığında otomatik olarak gizli bir özel alan ekler ve değeri bir yayına ilişkilendirir

add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
    add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
1

Kısa kod kullanarak bloginfo arayın ...

function digwp_bloginfo_shortcode($atts) {

    extract(shortcode_atts(array(
            'key' => '',
            ), $atts));

    return get_bloginfo($key);
}

add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');

Kullanım:

[bloginfo key='name']
0
jackreichert