PHP7.2で「create_function」が非推奨になる

Filed under: functions.php — kdcs @ 20年1月17日 金曜日

PHP7.3でWordPressオリジナルテーマの動作テストを行ったところ、
「Deprecated: Function create_function() is deprecated」というエラー
これはPHP7.2から「create_function」が非推奨になったため。

該当箇所はfunction.php内に記述していた本体アップデートを非表示にする記述

add_filter('pre_site_transient_update_core', create_function('$a', "return  null;"));

こちらでcreate_functionを使用しているため

この記述を以下のように修正

//本体のアップデート通知を非表示
add_filter("pre_site_transient_update_core", "__return_null");

プラグインのアップデート通知を非表示にする場合

//プラグインのアップデート通知を非表示
add_filter("pre_site_transient_update_plugins", "__return_null");

WordPress ログインユーザーを自動ログアウトさせる

Filed under: functions.php,wordpress — kdcs @ 20年1月15日 水曜日

ログインしたまま放置を避けるために一定時間操作が無い場合にログアウトさせる記述

function.phpに記述

//一定時間無操作で自動ログアウトする --------------------------------------------
add_action( ‘admin_init’, ‘mytheme_admin_init’ );
function mytheme_admin_init() {
add_filter( ‘auth_cookie_expiration’, ‘mytheme_auth_cookie_expiration’, 10, 3 );
$user = wp_get_current_user();
wp_set_auth_cookie( $user->ID, true );
}
function mytheme_auth_cookie_expiration( $expiration, $user_id, $remember ) {
if ( $remember ) $expiration = 3600; // 1時間 60 * 60 * 1
return $expiration;
}

$expiration = に秒数を入れる

welcart 商品一覧ページに「在庫有り」のみ表示させる

Filed under: functions.php,welcart — kdcs @ 19年12月23日 月曜日

通常は在庫有り無し関係なく公開されている商品を一覧表示するが、これを在庫がある商品だけを表示できるようにする。

チェックボックスにチェックを入れると在庫有り商品のみ表示する

<!-- 在庫ありのみ表示-->
<form method="GET" action="<?php echo get_category_link($cat); ?>">
    <input type="checkbox" name="sort" value="zaiko" onChange="this.form.submit()"
           <?php if(isset($_GET['sort']) == 'zaiko'){ echo 'checked';} ?>>
    <label>在庫有りのみ表示</label>
</form>
<!-- 在庫ありのみ表示(終了)-->

以下をfunction.phpに記述

function my_sort_item( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }
    if ( $query->is_category() ) {
        $sort = isset($_GET['sort']) && is_string($_GET['sort']) ? $_GET['sort'] : '';
        $cat = isset($_GET['cat']) ? $_GET['cat'] : '';
 
        if ( $sort !== 'zaiko' ) {
            return;
        }
 
        $args = array(
            array(
                'key' => '_isku_',
                'value' => '"stocknum";s:1:"0"',
                'compare' => 'NOT LIKE',
            ),
            array(
                'key' => '_isku_',
                'value' => '"stock";s:1:"2"',
                'compare' => 'NOT LIKE',
            ),
        );
 
        $query->set('meta_query' , $args);
    }
}
add_action( 'pre_get_posts', 'my_sort_item', 10, 3);

参照するデータはWordPressデータベース、postmetaのmeta_keyが_isku_の中
stocknum=在庫数 s:1:”0″=在庫0(数値)
stock=在庫ステータス s:1:”2″=在庫ステータスが「売切れ」
0 在庫有り
1 在庫僅少
2 売切れ
3 入荷待ち
4 廃盤
※s:1の1は一桁という意味っぽい
例えば在庫数100ならs:3:”100″ 在庫数10000ならs:5:”10000″になる

WordPress wp_headで出力されるコードを削除する

Filed under: functions.php — kdcs @ 19年12月4日 水曜日

headタグ内に記述されるwp_headからは各種のコードが出力されるが、
不要なものオリジナルテーマの記述で重複してしまうものもある。
これらを削除するには以下をfunction.phpに記述する。

※プラグイン「welcart」ではwp_headで出力するjQueryを停止させるとwp_footerで読み込む仕様になっているみたい。
そこで、wp_head、wp_footerともjQueryを出力させたくない場合は、
add_action内の’wp_enqueue_scripts’を’init’にする

// wp_head関連 wp pluginsバージョン情報を非表示にする-------------------------------------
remove_action('wp_head','wp_generator');
function remove_cssjs_ver2( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver2', 9999 );
add_filter( 'script_loader_src', 'remove_cssjs_ver2', 9999 );
// wp_head関連 ogpプロパティを非表示にする------------------------------------------------
remove_action( 'wp_head', 'usces_action_ogp_meta');
// wp_head関連 絵文字を非表示にする-------------------------------------------------------
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
// wp_head関連 canonicalを非表示にする----------------------------------------------------
remove_action( 'wp_head', 'rel_canonical' );
// wp_head関連 コメントのフィードを非表示にする-------------------------------------------
remove_action('wp_head', 'feed_links_extra', 3);
// wp_head関連 rel="prev"とrel="next"を非表示にする---------------------------------------
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
// wp_head関連 投稿ツール'EditURIとwlwmanifest'を非表示にする-----------------------------
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
// wp_head関連 oembedを非表示にする-------------------------------------------------------
remove_action('wp_head','wp_oembed_add_discovery_links');
// wp_head関連 shortlinkを非表示にする----------------------------------------------------
remove_action('wp_head', 'wp_shortlink_wp_head');
// wp_head関連 wp-json'https://api.w.org/'を非表示にする----------------------------------
remove_action('wp_head','rest_output_link_wp_head');
// wp_head関連 dnsプリフェッチを非表示にする----------------------------------------------
function remove_dns_prefetch( $hints, $relation_type ) {
	if ( 'dns-prefetch' === $relation_type ) {
		return array_diff( wp_dependencies_unique_hosts(), $hints );
	}
	return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );
// wp_head関連 wp_headでjQueryを読み込ませない--------------------------------------------
function my_delete_local_jquery() {
if (!is_admin()){
    wp_deregister_script('jquery');
  }
}
add_action( 'wp_enqueue_scripts', 'my_delete_local_jquery' );

検索エンジンにインデックスさせるのを拒否するmeta robotsの削除

// wp_head関連 robotsを非表示にする-------------------------------------------------------
remove_action('wp_head', 'noindex', 1 );

※デバッグモードにて
「Notice: wp_deregister_script が誤って呼び出されました。管理画面では jquery スクリプトの読み込みをオフにしないでください。フロントエンドテーマだけをターゲットにするには、wp_enqueue_scripts フックを使いましょう。」と出るので45行目あたりを修正。
if(!is_admin()が無くても動作するみたい・・・
2020.1.21 記

WoredPressのバージョン情報を非表示にする

Filed under: functions.php — kdcs @ 19年12月4日 水曜日

オリジナルテーマを作成するときにheadタグ内にwp_head();を記述した場合、
ワードプレスのバージョン他、各種情報やプラグインなどのcssが出力される。

ワードプレスのバージョンやプラグインなどの=?varを非表示にしたいときは
function.phpに以下を記述する

// wp pluginsバージョン情報を非表示にする--------------------------------------------------
remove_action('wp_head','wp_generator');
function remove_cssjs_ver2( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver2', 9999 );
add_filter( 'script_loader_src', 'remove_cssjs_ver2', 9999 );

サイト内検索

カテゴリー

最近の投稿

↑上に戻る