ワードプレス(WordPress)のマルウェア(Malware)への対応

既に被害に合っていいる場合

FTPおよびサーバー関連、WordPress等のパスワードを全て変える。
また、改ざんされたファイルを全てチェック、削除する。

ログインユーザー名が表示されるのを防ぐ

http://******.***/?author=1のように、自サイトのURLに/?author=1を追記してブラウザで表示し、管理者権限を持つユーザー名が表示される場合、これを防ぐためにauthor.phpの内容を下記にする。

 <?php wp_redirect(home_url()); exit(); ?> 

 

ログイン保護と不正アクセス対策

SiteGuard WP Pluginというプラグインを導入する。
更新通知がうるさい場合は無効にする。

改ざんと不正ファイルのチェック

Wordfence Security – Firewall & Malware Scanというプラグインを導入

海外のIPアドレスを拒否する

.htaccessで海外からのアクセスを拒否する

?author=1でユーザー名がばれるのを防ぐ

WordPressでは、htttp://ドメイン?author=1でユーザー名がばれてしまう。
そのため、下記内容のauthor.phpテンプレートをアップすることで防ぐ。

<?php
    wp_redirect(home_url());
    exit();

WordPressの記事内容を文字数を制限して表示

WordPressで記事の内容を表示させたい時は
記事内容表示テンプレートタグ

<?php the_content(); ?>

で表示されます。 これを文字数を制限するには

<?php echo mb_substr(strip_tags($post-> post_content),0,200); ?>

更に制限した記事の後ろに ・・・を追加

<?php echo mb_substr(strip_tags($post-> post_content),0,200).'...'; ?>

WordPressでカスタムタクソノミー一覧を表示する

WordPressでカスタムタクソノミー一覧を表示する場合は、
以下のコードを使用すると良い。

<?php
$args = array(
	'numberposts' => -1,			//表示(取得)する記事の数 ※-1で全件表示
	'post_type' => 'shop',		//投稿タイプの指定
	'taxonomy' => 'area',			//タクソノミー名を指定
	'term' => 'kyubo',				//タームを指定
	'orderby' => 'date',			//ソート対象を指定
	'order' => 'DESC'					//ソート順を示すASCかDESC(省略時はDESC)
);
$customPosts = get_posts($args);
if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post );
?>
<div><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
<?php endforeach; ?>
<?php else : //記事が無い場合 ?>
<div><p>記事はまだありません。</p></div>
<?php
endif;
wp_reset_postdata(); //クエリのリセット
?>

【WordPress】アーカイブページで現在のカテゴリ・タグの情報を簡単に取得する方法

1. 以下の関数をそのままfunctions.php内の最下部あたりに貼り付けます。

/*
	アーカイブページで現在のカテゴリー・タグ・タームを取得する
*/
function get_current_term(){

	$id;
	$tax_slug;

	if(is_category()){
		$tax_slug = "category";
		$id = get_query_var('cat');	
	}else if(is_tag()){
		$tax_slug = "post_tag";
		$id = get_query_var('tag_id');	
	}else if(is_tax()){
		$tax_slug = get_query_var('taxonomy');	
		$term_slug = get_query_var('term');	
		$term = get_term_by("slug",$term_slug,$tax_slug);
		$id = $term->term_id;
	}

	return get_term($id,$tax_slug);
}

2. あとはアーカイブ(category.php、tag.phpなど)テンプレートの任意の場所に以下のソースコードを記述するだけ!

//カテゴリ・タグ・カスタムタクソノミー オブジェクトを取得
$term = get_current_term(); 

//以下は必要に応じて記述
echo $term->name; //名前を表示
echo $term->slug; //スラッグを表示
echo $term->description; //説明文を表示
echo $term->count; //投稿数を表示

地味な関数ですが今まではアーカイブの種類ごとに記述を変更する必要がありましたが、この関数で各アーカイブ共通の記述で情報が取得できるようになるので重宝するかと思います。
※この関数は投稿ページ(single.php)では使用できません。投稿ページではget_the_category()やget_term()をお使いください。

WordPressに管理画面固定ページ一覧でスラッグを表示させる方法

WordPressに管理画面固定ページ一覧でスラッグを表示させる方法は以下をfunctions.phpに記述する。

function add_page_columns_name($columns) {
 $columns['slug'] = "スラッグ";
 return $columns;
}
function add_page_column($column_name, $post_id) {
 if( $column_name == 'slug' ) {
 $post = get_post($post_id);
 $slug = $post->post_name;
 echo attribute_escape($slug);
 }
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);

single.phpでthe_content()が表示されない解決法

オリジナルテーマを作成時に single.php で the_content() が反映されない。
は表示されるのに、が表示されないのです。

その時は、the_content()のかわりに

<?php
$this_content= wpautop($post->post_content);
echo $this_content;
?>

と記載

wordpressでAJAXで次ページを読み込む「jQuery.autopager」

まずは、jQuery.autopagerをダウンロード。

基本的には

<script type="text/JavaScript">
$(function(){
	$.autopager({
		content	: '.content',	// ロードしたいコンテンツ部分のセレクタ 
		link	: '#next'	// 次ページへのリンクのセレクタ
	});
});
</script>

ボタンで読み込むには

<script type="text/JavaScript">
$(function(){
	$.autopager({
		content	: '.content',	// ロードしたいコンテンツ部分のセレクタ 
		link	: '#next',	// 次ページへのリンクのセレクタ
		autoLoad: false,	// スクロールで自動読込みするどうか
		load	: function(){	// 読み込み完了後に発生するイベント
			// "this"は読み込んだコンテンツ要素を指す
			$(this).before('<hr/>'); // 左記は例(読み込んだヤツの前に区切り線を追加))
		}
	});
	$('#next').click(function(){	// 次ページへのリンクボタンが押されたら
		$.autopager('load');	// loadしやがれぃ!
		return false;
	});
});
</script>

さらに、最後読み込んだ後ボタンを消すにはload部分を下記に変える

load: function(current, next){
if( current.page >= max_num_pages; ?> ){
$(‘#next’).hide();
}
}

WordPressのシングルページで前後の記事のリンクを表示方法

WordPressのシングルページで前後の記事のリンクを表示方法は以下

    <div class="pagination_box">
      <ul>
<?php $nextpost = get_adjacent_post(false, '', false); if ($nextpost) : ?>
        <li class="fL"><a href="<?php echo get_permalink($nextpost->ID); ?>"><img src="<?php bloginfo('template_directory'); ?>/images/prev_btn.png" alt="prev"></a></li>
<?php else: ?>
        <li class="fL"><img src="<?php bloginfo('template_directory'); ?>/images/prev_btn_none.png" alt="prev"></li>
<?php endif; ?>
        <li class="fL"><img src="<?php bloginfo('template_directory'); ?>/images/pagination_separator.png" alt="separator"></li>
<?php $prevpost = get_adjacent_post(false, '', true); if ($prevpost) : ?>
        <li class="fL"><a href="<?php echo get_permalink($prevpost->ID); ?>"><img src="<?php bloginfo('template_directory'); ?>/images/next_btn.png" alt="prev"></a></li>
<?php endif; ?>
      </ul>
      <p><a href="<?php echo esc_url( home_url( '/' ) ); ?>radio/">VIEW ALL</a></p>
    </div>

Advanced Custom Fieldsで他のページのフィールドを値に格納する方法

Advanced Custom Fieldsで他のページのフィールドを値に格納する方法は以下

$food01image = get_field('food01image', 22, true);

WordPress の自動アップデートを止める方法

WordPress の自動アップデートを止めるには、config.phpに下記を追記する。

/** 自動アップデートの無効 */
define( 'AUTOMATIC_UPDATER_DISABLED', true );

WordPressでスマホやタブレットなどに応じてテーマが切り替えられるプラグインMulti Device Switcher

WordPressでスマホやタブレットなどに応じてテーマが切り替えられるプラグインMulti Device Switcher
Multi Device Switcher

WordPressでカスタムフィールにショートコード使用する方法

WordPressでカスタムフィールにショートコード使用するには、
以下のタグを使用する。

<?php
echo apply_filters('the_content', get_post_meta($post->ID, 'foo', true));
?>

wordpressでテーマファイルのphpファイルをインクルードする方法

テンプレートパートファイルをインクルードする場合に、

<?php include (TEMPLATEPATH . '/mydirectory/template.php') ?>

と記述する事も出来る

<?php get_template_part('mydirectory/template'); ?>

と記述する事も出来ます

<?php locate_template( 'mydirectory/template.php', true,true ); ?>

と記述する事も出来ます

wordpressのカスタム投稿のfeed URLを取得

カスタム投稿タイプのスラッグが「blog」の場合。
http://WordPressのサイトアドレス/feed?post_type=blog

固定ページの最上位のスラッグを取得する方法

function.phpに下記を記述

//bodyクラスに最上位のスラッグを表示
function ps_get_root_page( $cur_post, $cnt = 0 ) {
	if ( $cnt > 100 ) { return false; }
	$cnt++;
	if ( $cur_post->post_parent == 0 ) {
		$root_page = $cur_post;
	} else {
		$root_page = ps_get_root_page( get_post( $cur_post->post_parent ), $cnt );
	}
	return $root_page;
}

取得したいテンプレートファイルに下記を記述

$root_slug = ps_get_root_page( $post );
$root_slug = $root_slug->post_name;
echo $root_slug;

WordPressのテンプレートファイル内に、他のテンプレートphpファイルを呼び出す

<?php include( TEMPLATEPATH . '/sample.php' ); ?>

記事・固定ページ内の任意の位置でPHPファイルをインクルード(挿入/実行)する方法

/wp-content/themes/使用中のテーマ名/functions.php の最後に以下を挿入。

function Include_my_php($params = array()) {
    extract(shortcode_atts(array(
        'file' => 'default'
    ), $params));
    ob_start();
    include(get_theme_root() . '/' . get_template() . "/$file.php");
    return ob_get_clean();
} 

add_shortcode('myphp', 'Include_my_php');

読み込みたいphpファイルを作成し、同フォルダにアップする。

記事内に以下を記述(ファイル名がexample.phpの場合)

[myphp file='example']

WordPressの投稿でサイトURLとテーマフォルダのパスをショートコードで取得する方法

サイトURLを取得するショートコードを作成

function shortcode_url() {
    return get_bloginfo('url');
}
add_shortcode('url', 'shortcode_url');

/* 投稿内で [url] と記述する */

投稿内でショートコードを記述するれば、blobinfo(‘url’)の値と置き換えられるようになります。

テーマフォルダのパスを取得するショートコードを作成

function shortcode_templateurl() {
    return get_bloginfo('template_url');
}
add_shortcode('template_url', 'shortcode_templateurl');

/* 投稿内で [template_url] と記述する */

こちらも同じく、投稿内でショートコードを記述すれば、blobinfo(‘template_url’)の値と置き換えられるようになります。

WordPressで特定のカテゴリーの最新記事を表示

WordPressで特定のカテゴリーの最新記事を表示するタグは以下の通り

<?php
query_posts('showposts=1&cat=13');
while(have_posts()) : the_post();
?>
<div><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></div>
<div><?php the_content(); ?></div>
<?php endwhile; ?>

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress