sparklingで投稿者名を消す

またちょっと空いたね。
あめすけです。

所用でsparklingの子テーマ作ってた時につまづいたのでメモ。
複雑なテーマわからんちん。うぐぐ(:3_ヽ)_

ユーザー名出てると良くないらしい

最近乗っ取りだのなんだのと物騒なので。

ハッキングの手口で多いのは、ユーザー名(≒ログインID)をある程度絞り込んでからパスワード総当たりのアタックをかけるというやつらしい。

じゃあユーザー名出てたら危ないやん(°ω°;)

しかし表に出てなくても、大体のテーマでソース内にユーザー名が表示されています。なんたる!!
何人かで運用してるところだとアレだけど、ひとりで書いてるならユーザー名は消しとくに越したことはないよね!

ということでレッツラドン。

しかしsparklingって結構ややこしい作りしてるっぽくて、関数がfunction.phpだけで完結してくれてなかった。
includeに次ぐincludeで目的の関数探すのに随分手間取ったけど見つけたよ!

inc/template-tags.phpで関数の定義をしている模様。

ソース

投稿者名が含まれるあたりはinc/template-tags.phpの86-96

sparklingはユーザー定義関数sparkling_posted_on()として投稿日とかを一緒くたにして出してるみたいなので、

[html]
printf( ‘<span class="posted-on"><i class="fa fa-calendar"></i> %1$s</span><span class="byline"> <i class="fa fa-user"></i> %2$s</span>’,
sprintf( ‘<a href="%1$s" rel="bookmark">%2$s</a>’,
esc_url( get_permalink() ),
$time_string
),
sprintf( ‘<span class="author vcard"><a class="url fn n" href="%1$s">%2$s</a></span>’,
esc_url( get_author_posts_url( get_the_author_meta( ‘ID’ ) ) ),
esc_html( get_the_author() )
)
);
}
[/html]

から、

HTMLとして出力してる(っぽい)
[html]<span class="byline"> <i class="fa fa-user"></i> %2$s</span>’,[/html]

ユーザーIDを取得してる(っぽい)
[html]
sprintf( ‘<span class="author vcard"><a class="url fn n" href="%1$s">%2$s</a></span>’, esc_url( get_author_posts_url( get_the_author_meta( ‘ID’ ) ) ),
esc_html( get_the_author() )
)
[/html]

を省いたやつを子テーマのfunction.phpに追加。

つまりこれ

[html]
printf( ‘<span class="posted-on"><i class="fa fa-calendar"></i> %1$s</span>
sprintf( ‘<a href="%1$s" rel="bookmark">%2$s</a>’,
esc_url( get_permalink() ),
$time_string
),
);
}
[/html]

ユーザー名は消えて投稿日とかが残るよ٩( ‘ω’ )و

そこかしこに(っぽい)とついてるのは解説に対する自信のなさの表れです

function_exists( )があるかチェック

さて、通常だとfunction.phpは子→親の順で読み込まれるため上書きができない。
でも、親テーマの該当する関数にfunction_exists( )が設定されていれば大丈夫!

※定義済の関数を読み込まなくする条件判定
 function_exists(‘定義したい関数’)と書かれています

sparklingも

if ( ! function_exists( ‘sparkling_posted_on’ ) ) :

があったから大丈夫ダヨ!

もし設定されてなかったら

[html]
function after_all() {
 <処理>
}

// 親テーマの後に実行
add_action( ‘after_setup_theme’, ‘after_all’ );
[/html]

で行けるらしいけどまだやり方はわかんない。

とりあえず走り書きでメモ〜
後で見たらわけわからんことになってそう(:3_ヽ)_

One thought on “sparklingで投稿者名を消す

  1. Pingback: replique réplique montre rolex

コメントを残す