web-dev-qa-db-ja.com

Functions.phpファイルに最適なコード集

質問や回答の左側にある上向き矢印をクリックして、質問と回答に投票してください。

現在この投稿を閲覧している他の多くの人と同様に、私は私のワードプレスのスキルを学び、向上させるために様々なブログ、フォーラム、そしてディスカッショングループを読んでいます。過去12か月間、私は代わりにコードをfunctions.phpファイルに追加することによってプラグインの使用を代用するという使命を帯びてきました。私はプラグインが多くの状況で非常に有用であることに完全に同意しますが、私の経験では90%の使用例でプラグインが存在するかもしれませんがさらに多くの場合、そのようなプラグインはメニューや他のadmin要素を追加しましたが、それは私が望んでいない、あるいは必要としていません。

多くの場合、プラグインのコードを分析することで、必要なコードを削除し、それをfunctions.phpにハードコードすることができたことがわかりました。これにより、不要な要素を含めることなく、必要な機能を正確に実現できました。

それで、この記事の目的は、読者/管理者/開発者に、私や他の人と共有し、あなたのテーマのfunction.phpファイルに追加したコードを利用しないで共有することです。プラグイン.

ここに回答を送信するときは、各コードにタイトルを付けてください。互換性があることがわかっているWordpressのバージョンがあれば、その機能を説明している説明を含めてください。情報を見つけた場所のプラグインまたはソース。

私はあなたのすべての応答を楽しみにしています、そしてもちろん私がそれらを見つける時はいつでも私自身の新しい発見を絶えず追加します。

327

リンクメニュー項目の削除

私のWordPressのインストールの多くは、ユーザーが 'Links'メニュー項目にアクセスすることを必要としません。この関数はそれをビューから削除します。

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

管理者以外のために今すぐアップグレードメッセージを無効にする

私は実際にはこのコードを使わないことが大好きです。代わりに、私は顧客が彼ら自身のWordPressインストールを更新することを可能にすることを好みます。これはサイトを最新に保つのを助け、より良いコードを書くことを私に強います。

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

アーカイブページにカスタム投稿タイプを追加する

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

ログインページと管理者用のカスタムロゴ

/*-----------------------------------------------------------------------------------*/
/*  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

adminの "投稿"メニュー名をあなたが望むものに変更する(例: "記事")

// 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;
}

へのクレジット - smashingmagazine.com

1
dani

前後のリンクにカスタムクラスを追加する

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

投稿が公開されると自動的に非表示のカスタムフィールドを追加して値を投稿に関連付けます

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

wp_nav_menuにログインリンクを追加

//ADD LOGIN LINK TO MENU
add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) { 

        $loginoutlink = wp_loginout('index.php', false); 

        $items .= '<li>'. $loginoutlink .'</li>'; 

    return $items; 
}
1
Rev. Voodoo

ショートコードを使用してbloginfoを呼び出す...

function digwp_bloginfo_shortcode($atts) {

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

    return get_bloginfo($key);
}

add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');

使用法:

[bloginfo key='name']
0
jackreichert