Word Press

wordpressで各ページで共通となる単語・文章を管理する

WordPressで共通文言を管理する為に便利なのがショートコードとカスタムフィールドの組合せです。今回はこの共通文言の作り方を記事にします。

どういうときに使うかというと、日本語サイト独特なような気もするのですが、「・・・できます」「・・・可能です」の統一。「お問合せ」「お問い合わせ」という送り仮名の統一・・・数ページのサイトならいいですが、百ページにも及ぶサイトでこれらの類似文言を統一させるのはかなり手間です!

これらを1か所で管理できると便利だなー、という事がきっかけで自作関数を作ったのですが、これが意外と便利なので公開しておきます。少しでもWebコーディングやデザインされている人の助けになれば幸いなのですが。

今回は、『「エンドユーザ様」「利用者さま」「ご利用者様」というバラバラの文言を「ご利用者さま」に統一する』という前提で以下記載していきます。

『アドバンストカスタムフィールド(ACF)』というプラグインでカスタムフィールドを定義します。

1.アドバンスドカスタムフィールドというプラグインをインストールしてください。

2.ホームとなる固定ページなどに共通となるカスタムフィールドを作成します。今回は「ユーザ」というラベルに「user」というフィールド名、デフォルト値を「ご利用者さま」にしています。

3.追加したカスタムフィールドは、ホームとして設定している固定ページである「トップ」という固定ページのみに表示させるように設定します。

4.「トップ」という固定ページを管理画面-固定ページから開くと、カスタムフィールドに「ご利用者さま」と反映されているかと思います。この状態で1度ページを更新します。これで「トップ」というページのカスタムフィールド:user に「ご利用者さま」が設定されました。

共通名称用のショートコードを作成します

5.事前に「トップ」という固定ページのページIDを確認してください。ページIDの確認方法は、「固定ページ」一覧のタイトル部分をマウスオーバーすれば、URLがブラウザ状にリンク先として表示されたりします。post=xxx という部分がページのIDとなります。

5.外観 – テーマの為の関数(function.php)を開きます。ここでショートコードを作成するのですが、関数名が長くなってはコーディングも大変で意味がないのでできるだけ簡潔な関数名にします。ここでは「ご利用者さま」(user)という事で [usr] というショートコードを想定します。

6.以下のようなコードをfunction.php に追記しましょう。xxxはページID、’user‘ はカスタムフィールド名です。


function usrFunc(){ return get_post_meta(xxx, 'user', true); }

add_shortcode('usr', 'usrFunc');

 

7.この状態で固定ページの記事本文にショートコードを設定していきます。固定ページであれ、記事投稿ページであれ、本文のお客様、利用者様と記載する部分に[usr] と設定することで文言が統一されます。

  • 変更前:弊社のサービスではお客様が分かりやすいサービスを展開してます。
  • 変更後: 弊社のサービスではご[usr]が分かりやすいサービスを展開してます。

ちょっと応用編

共通文言がかけるという事は共通的なHTMLも記載できます。カスタムフィールドのタイプをテキストからテキストエリアにすることで共通的なHTMLがかけるようになります。

 

 

WordPress4.7系のREST-API脆弱性による一部誤解について

長くなりますが、ブログ投稿が妥当そうですので。
世界的シェアをもつWordPressの今回のニュースは、国内の中小零細・大企業・官公庁サイトで何万件もの改ざん攻撃の指摘を受けています。
大きく影響を受けるのはREST APIが標準搭載されたver4.7.0/ver4.7.1です。
【ITmedia】
ITmediaさんを特定するわけではないのですが、社会的な影響度が大きいからニュースになったのでしょうが、タイトル見ると『WordPress≒セキュリティ弱い』と誤解されそうです。
『WordPress≒逆にセキュリティ対策が早い。但しシェアが大きい為社会影響が大きい。』と思ってもらった方がいいなぁ。
初版4.7.0をリリース後48hour以内に既に脆弱性をつかれ、4.7.1で対処しさらに4.7.2というところでしょうか。(リリースノート確認してません)

続きを読む

さくらレンタルサーバのWordPressでユーザ情報更新時にInternalServerError(500)

WordPressのマルチサイトでユーザー追加時に500エラー』まさにこの症状がでたのですが、メール周りでもなさそうだったので、以下のように継続調査しました。

タイトルのように、『Internal Server Error 500』が表示されたときは、以下箇所を疑ってみます。

.htaccess の書き方の間違い

htaccess内のBasic認証やAccess denyなどの設定、Permanentなどの記述方法ミス、不要な全角スペースがある、などを疑います。

PHP のプログラムミス

プログラム記載ミスや処理の記述がないか疑います。

php.ini の記述ミス

さくらレンタルサーバの場合、php.ini はコントロールパネルから提供されています。この中に記載ミスがないか調査します。

それでも原因不明な時は・・・

コントロールパネルから提供されているエラーログを確認します。

今回、私の環境でエラーログには、『malformed header from script. Bad header=/home/hoge/dead.letter… S:』が表示されていました。

それと合わせて、php.iniのエラー表示もありphp.iniを見てみました。結果、原因はphp.iniの記載ミスでした。

 

BuddyPressをカスタマイズ

BuddyPressプロフィール一覧上部に、カスタム文章を表示する。さらに、表示・編集で切り替える。


add_action('bp_before_profile_field_content', 'account_details_display_howto' ); // 登録画面文章表示
add_action('bp_before_account_details_fields', 'account_details_display_howto' ); // 登録画面文章表示
// 新規アカウント登録時のタイトル設定
function zam_before_register_page() {
echo "<h2>" . get_the_title(6) . "</h2>";
return "";
}

登録メンバー一覧のサムネイルや、掲載情報を修正する場合は

/home/ippin-dou/www/test/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/members-loop.php を直接修正するか、add_action(bp_directory_members_item, functionxxxx) を追加すればよい。

プロフィールの一覧上部に任意の文章を追記する

Buddypressでプロフィール表示画面の、一覧表となる上部にBuddyPressのプロフィール拡張プラグイン『Buddypress xProfile Rich Text Field』で追加・追記した文章を表示させます。
以下のコードでは、プロフィール項目A,B,Cの項目を表示させる処理です。add_action() でアクションフックに登録し、プロフィール情報をecho させるのみです。

$count_loop = FALSE; // 同一画面で複数回CallBackされたカウント
add_action( 'bp_before_profile_field_content', 'bp_before_profile_func');
function bp_before_profile_func(){
    global $count_loop;
    global $bp;
    
    // 初回のみ表示させる
    if($count_loop) return ;
    else $count_loop = TRUE;
    // echo bp_displayed_user_id();
    $profile_title="タイトル";
    $corp_name = xprofile_get_field_data('[プロフィール項目A]', bp_displayed_user_id());  
    $corp_picture = xprofile_get_field_data('プロフィール項目B', bp_displayed_user_id());  
    $catchecopy = xprofile_get_field_data('プロフィール項目C', bp_displayed_user_id());  
    if($catchecopy != "")  $profile_title = $catchecopy;

    $profile_descript= xprofile_get_field_data('プロフィール項目D' ,bp_get_member_user_id());
    $profile_text = nl2br($profile_descript);
    echo <<<_PROFILE_INF_
	<h2>{$corp_name}</h2>
	{$corp_picture}
        <strong id="bf_profile_title">{$profile_title}</strong>
        <p id="bf_profile_desc">{$profile_text}</p>
_PROFILE_INF_;
}

howto-user-metaslider

WordPress Plugin のMetaSliderはスライド画像を容易に設定できるプラグインです。複数の画像スライドショーを作成、管理できます。残念ながら動画スライドショーはできません。「MasterSlider」プラグインであれば、Youtubeなどの動画コンテンツの埋め込んだスライダーも作成できます。

MetaSliderの場合、表示設定時はPHPに直接埋め込んでもできますし、記事・固定ページへショートコードで入れ込むことも可能です。

続きを読む

buddypress のユーザ登録承認・有効化する際のメール本文をカスタマイズする

wordpressのSNS向けプラグインであるbuddypressを運用していて、新たにユーザ登録された際、ユーザに自動的にActivateするためのメールが届くのですが、そのやり方を調査したので、以下メモしておきます。

参考にさせてもらったのは以下3つのサイト。

3つめの海外サイトが一番参考になりました。メール本文を変更したい場合は『bp_core_signup_send_validation_email_message』にfilterをかけます。


add_filter( 'bp_core_signup_send_validation_email_message', 'custom_buddypress_activation_message', 10, 3 );
function custom_buddypress_activation_message( $message, $user_id, $activate_url ) {
$user = get_userdata( $user_id );
$post = get_post([有効化]);
return "$user->user_login
$post->post_content
$activate_url
";
}

$post = get_post([有効化]); という部分は、buddypressの「設定」-「固定」にある、有効化させた際の固定ページのidを指定します。有効化した際の固定ページに記載した文章を入れ、これをメール本文として送付するよう修正しています。

 

wordpress「new-user-approve」プラグインの日本語化

wordpress のプラグイン new-user-approve (ver1.7.3)の日本語化をしましたのでpo/moファイルをこちらに置いておきます。

本プラグインは、新しいユーザ登録時に承認と管理機能をもつプラグインです。

翻訳ファイル:download1.0 - WordPressユーザ登録時の承認プラグインの日本語化ファイルです。

WordBench香川 at 男木島(猫島)

先日1年ぶりに男木島へ行きました。WordBenchというWordPressユーザの集まりの企画でした。全11名の参加でした。

午前中は島探索と猫の集落訪問。午後はWordBenchの真面目な勉強とお話しをしました。

WordBench SNS @nukaga さんの振り返りレポート