2021年11月27日土曜日

reCAPTCHA (v3) を指定したページで、しかもデフォルトのパーマリンクで表示する

 WordPressで、reCAPTCHA (v3)を設定したとき、指定したページのみ表示する で検索すると

functions.php に

// お問い合わせページを除き、「reCAPTCHA」を読み込ませない function load_recaptcha_js() {     if ( ! is_page( 'contact' ) ) {  wp_deregister_script( 'google-recaptcha' );  } } add_action( 'wp_enqueue_scripts', 'load_recaptcha_js',100 );

記載するとできるとあります。

が、これはパーマリンクが文字で設定されている場合に限ります。

事情によってパーマリンクをデフォルトの ?p=数字 

https://www.test.org/?p=123

に設定している場合はどうすれば?というときは、該当のページのIDを書きます。

この指定の仕方は WordPress codexに記載があります。

// お問い合わせページを除き、「reCAPTCHA」を読み込ませない function load_recaptcha_js() { if ( ! is_page( '123' ) ) { wp_deregister_script( 'google-recaptcha' ); } } add_action( 'wp_enqueue_scripts', 'load_recaptcha_js',100 );

2021年11月13日土曜日

投稿タイトルをカスタムフィールドから自動設定する - WordPress

参照リンクが消えたので転載

//投稿タイトルをカスタムフィールドから自動設定する

function auto_review_title( $post_id, $post ) {

// カスタムフィールドの値を取ってくる

// $fld_institute_id = get_post_meta($post_id, 'tec_institute', true);


$fld_organizer_id = tribe_get_organizer($post_id);

$fld_ws_id = get_post_meta($post_id, 'tec_ws', true);

// $fld_director_id = get_post_meta($post_id, 'tec_director', true);

// $fld_seats_id = get_post_meta($post_id, 'tec_number_seats', true);

// $ID = get_the_ID();

// 「新規追加」を押した時点でここを通ってしまい、

// その時はカスタムフィールドの値が取ってこれないので、

// それを弾く為にempty()で中身があるか確認している

// if( !empty( $fld_institute_id ) and !empty( $fld_ws_id ) ){

// if( !empty( $fld_model_id ) and !empty( $fld_reviewr_id ) and !empty( $fld_seats_id ) ){

// if( !empty( $fld_organizer_id ) and !empty( $fld_ws_id ) and !empty( $fld_organizer_id ) ){

if( !empty( $fld_organizer_id ) and !empty( $fld_ws_id )){

if( $post->post_type == 'tribe_events' ){

// $fld_model_idには機種名ではなく、タームIDが入っている

// ターム名がほしいので、まずget_term_byでタームを取ってくる

//$term1 = get_term_by( 'term_id', $fld_model_id, 'tec_director' );

//$term2 = get_term_by( 'term_id', $fld_reviewr_id, 'tec_ws' );


// そのあとにnameでアクセスする

// $title = $fld_model_id . ' - ' . $fld_reviewr_id;

// $title = $fld_model_id . ' - ' . $fld_organizer_id;

// $title = $fld_organizer_id . ' - ' . $fld_ws_id . ' - ' . $fld_director_id;

$title = $fld_organizer_id . ' - ' . $fld_ws_id;

// $title = $fld_organizer_id . ' - ' . $fld_institute_id . ' - ' . $fld_ws_id . ' - ' . $fld_director_id;

// $title = $fld_model_id . ' - ' . $fld_reviewr_id . ' - ' . $fld_organizer_id. ' ' . $fld_etc_id;

// $title = $fld_model_id . ' - ' . $fld_reviewr_id . ' - ' . tribe_get_organizer();

// $title = $fld_model_id . ' - ' . $fld_reviewr_id . ' - ' . $fld_seats_id;

//$title = $term1->name . '_' . $term2->name;

// 「wp_update_post」実行時にもこの関数に通ってしまうため、一時的にフックを取る

remove_action( 'wp_insert_post', 'auto_review_title' );

// タイトルを更新

wp_update_post( array(

'ID' => $post_id,

'post_title' => $title

) );

// 「wp_update_post」の処理が終わったので、この関数を再度フックする

add_action('wp_insert_post', 'auto_review_title', 10, 2 );

}

}

}

add_action('wp_insert_post', 'auto_review_title', 10, 2); // 記事追加時のアクションにフック

//投稿タイトルをカスタムフィールドから自動設定する

1.

投稿してから更新すると

投稿タイトルが

テスト の時

更新すると

テストテスト

に2重投稿される問題があります。削除すれば消えます。

2.

パーマリンク設定が投稿名で、投稿タイトルををカスタムフィールド欄で反映させる場合、漢字入力しているとパーマリンクが漢字になります。アドレスをコピペして共有するときにエンコードされて長くなってしまいます。

2021年11月9日火曜日

Bulk Mail Send - Woocommerceで顧客あてに一括メールを送る tips集

Woocommerceで顧客あて、または顧客が注文した商品ごとにまとめてメールを送るプラグイン

Bulk Mail Send

 https://wordpress.org/plugins/bulk-mail-send/

Woocommerceで オンラインレッスンのZOOMリンクを販売して後日、顧客にメールを一斉送信できたらよいと思っていた時に見つけました。

「注文を選択」を、注文のステータスで絞り込む方法

    Bulk Mail Send 「注文を選択」では、注文のステータスに関わらず、すべての顧客がリスト表示されます。

    ここですべての顧客にチェックを付けて、メールを送信したいという方は少ないと思います。なぜなら「注文完了」「キャンセル」した顧客が混ざっているからです。

    そこで ステータス completed と検索欄に入力して検索します。すると、 completed(完了) の顧客だけが表示されます。同様に cancel をいれるとキャンセルした顧客だけが表示されます。

    購入した人だけ、cancelした人だけにメールを送信できます。

送信者名と送信元メールアドレスを変更する方法

    「Bulk Mail Send」を使用して、WordPress内蔵のメーラでメールを送信すると、送信元がWordPress WordPress@ドメイン名になります。ちょっとこれは店舗として怪しまれると感じました。

    そこで送信されるメールの送信者名と送信元メールアドレスを変更する方法です。

    1. この記事のコードをテーマのfunctions.phpに入れるか自作プラグイン化する
    https://sys-guard.com/post-16369/

    2. WpMail SMTP プラグインなどのSMTPプラグインをgmail/smtpサーバで設定する。

    WordPress内蔵のメーラでメールを送信すると未達や遅配、迷惑メールになることがあるので、2. のSMTPプラグインを使用するのが良いです。プラグインを入れるだけで送信元名、メールアドレスが変更できますが、smtpサーバが設定されない場合もあります。

トラブル

本文に改行が入っているとOutlookとメールで改行が削除される

   本文・署名に改行が入っていると、Outlookクライアント、https://outlook.live.com/ と Windows10 付属のメールで改行が削除されます。

    Thunderbird,gmailでは問題ありません。

    Outlookクライアントのテキスト形式メッセージ内の余分な改行を削除する は効果がありませんでした。

メール本文はHTMLになっているのでクライアント側が問題なのかと思います。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><span style="white-space:pre-wrap">改行が入っていると
Outlookと
メールで
削除される</span>
メールを一斉送信するときにはどうしても改行が入るので、受け取る側がOutlook系のメーラだと、なんだろうな?と思われる印象です。

もしや、と思い立って。

Outlookクライアント、https://outlook.live.com/ と Windows10 付属のメールで使われているHTMLレンダラーが IE11なのでは?と下記のソースを書いたHTMLファイルをつくって読ませてみたところ、きちんと改行されていました。

2021年4月11日日曜日

改 Events Managerの価格表示の小数点以下「.00」を消す方法【WordPressプラグイン】

Events Managerの価格表示の小数点以下「.00」を消す

を探すと

https://jun1ch.com/events-manager00

http://kumakake.com/wordpress/3226

が出てきますが2021年4月11日現在 コードが変わっています。


でテーマファイルを触らない解決策はこれ こっちのほうが良い

https://nkmrkisk.com/archives/1883


テーマファイルを触るのはこれ

https://qiita.com/buchi014/items/e78ef3a8ca4e4021c90d


/(ドメイン名)/public_html/wp-content/plugins/events-manager/em-functions.php

このファイルの229行目

$precision = 2 を $precision = 0に変更します。

function em_get_currency_formatted($price, $currency=false, $format=false, $precision = 0){

function em_get_currency_formatted($price, $currency=false, $format=false, $precision = 2){


    $formatted_price = '';

    if(!$format) $format = get_option('dbem_bookings_currency_format','@#');

    if(!$currency) $currency = get_option('dbem_bookings_currency');

    $formatted_price = str_replace('#', number_format( $price, $precision, get_option('dbem_bookings_currency_decimal_point','.'), get_option('dbem_bookings_currency_thousands_sep',',') ), $format);

    $formatted_price = str_replace('@', em_get_currency_symbol(true,$currency), $formatted_price);

    return apply_filters('em_get_currency_formatted', $formatted_price, $price, $currency, $format);

}

 

Event Manager WordPress プラグインのログインフォームをレスポンシブにした

テンプレートファイルをテーマ・プラグイン・events-managerにコピー

the template file at events-manager/templates/forms/bookingform/login.php

to use templates: http://wp-events-plugin.com/documentation/using-template-files/


eg. wp-content/themes/Your Theme/plugins/events-manager/forms/bookingform/login.php


CODE login.php

<?php

/* 

 * This file generates the default login form within the booking form (if enabled in options).

 */

?>

<div class="em-booking-login">

<form class="em-booking-login-form" action="<?php echo site_url('wp-login.php', 'login_post'); ?>" method="post">

<p><?php esc_html_e('Log in if you already have an account with us.','events-manager'); ?></p>

    <p>

<label><?php esc_html_e( 'Username','events-manager') ?></label>

<input type="text" name="log" class="input" value="" />

</p>

<p>

<label><?php esc_html_e( 'Password','events-manager') ?></label>

<input type="password" name="pwd" class="input" value="" />

    </p>

<div>

     <?php do_action('login_form'); ?>

<input type="submit" name="wp-submit" id="em_wp-submit" value="<?php esc_html_e('Log In', 'events-manager'); ?>" tabindex="100" />

</div>

<p>

<label class="rememberme">

<input name="rememberme" type="checkbox" id="em_rememberme" value="forever" /> <label><?php esc_html_e( 'Remember Me','events-manager') ?></label>

<input type="hidden" name="redirect_to" value="<?php echo esc_url( get_site_url(false, $_SERVER['REQUEST_URI']) ); ?>#em-booking" />

</label>

</P>

<br />

<?php

//Signup Links

if ( get_option('users_can_register') ) {

echo "<br />";  

if ( function_exists('bp_get_signup_page') ) { //Buddypress

$register_link = bp_get_signup_page();

}elseif ( file_exists( ABSPATH."/wp-signup.php" ) ) { //MU + WP3

$register_link = site_url('wp-signup.php', 'login');

} else {

$register_link = site_url('wp-login.php?action=register', 'login');

}

?>

<a href="<?php echo $register_link ?>"><?php esc_html_e('Sign Up','events-manager') ?></a>&nbsp;&nbsp;|&nbsp;&nbsp; 

<?php

}

?>                     

<a href="<?php echo site_url('wp-login.php?action=lostpassword', 'login') ?>" title="<?php esc_html_e('Password Lost and Found', 'events-manager') ?>"><?php esc_html_e('Lost your password?', 'events-manager') ?></a>                        

  </form>

</div>


CSS

 add to customize css area


.em-booking-form label {

    width: 100%;

}


/* em login form responsive */

label.rememberme input{

   margin: 0 5px 0 0;

}


div.em-booking-login label {

    width: 90%;

}


@media screen and (max-width:767px){

div.em-booking-login {

    padding: 10px 10px 10px 10px;

    margin: 0px 0px 0px 0px;

    border-left: none;

    float: left;

}

}

`

ex.

https://wordpress.org/support/topic/login-form-not-responsive-3/

2021年3月15日月曜日

XREAでXMLReader と XMLWriter PHP モジュールが有効なんだけど実は無効の時の対策

XMLReader と XMLWriter PHP モジュールが実は無効の時の対策

Value domain の XREAでWordPress プラグイン

  • WP All Export 記事データなどを外部へcsv や xmlファイルをエクスポートする
  • One Click Demo Import デモサイトをインポートする 

を使用しようとするとエラーが出る。

理由はサーバ側モジュール DOMDocument、XMLReader と XMLWriter PHP モジュールが有効になっていないので使用できない。

phpinfo();で確認すると、XMLReader が有効と表示される。しかし、実は無効になっている。

<?php

phpinfo();

?>

--enable-xmlreader=shared' '--enable-xmlwriter=shared'


WP All Exportのエラー

必要な PHP コンポーネントが見つかりません。

XMLReader は、必要があります WP をすべてエクスポートと XMLWriter の PHP モジュールをインストールします。

これらは PHP の標準機能であり、WP すべてエクスポート エクスポートしようとしているファイルを書き込むために必要な。

Web ホスティング プロバイダーに連絡してインストールして DOMDocument、XMLReader と XMLWriter PHP モジュールをアクティブ化するように依頼します 

対策

例【php7.4の場合】

────────────────────

  1. ディレクトリパス【/public_html/.fast-cgi-bin/php74.ini】に
    下記のソースを追記
    ━━━━━━━━━
    extension=/usr/local/lib/php/extensions/php74_xmlreader.so
    extension=/usr/local/lib/php/extensions/php74_xmlwriter.so
    ━━━━━━━━━
  2. 下記URLへアクセス後、対象サーバーアカウント下の「ウェブ」をクリック
     ■XREAの管理・購入
     https://www.value-domain.com/web.php
  3. 何も変更せずにページ下部「ドメイン設定」をクリック

────────────────────

しばらくまってサイトをリロードする。WP All Exportのページを開くとエラーが出ておらず、実行できた。

SWELL|コーポレートサイトでよくある追従バナーを「複数」設置するカスタマイズ

下記のカスタマイズを参考に、複数のバナーを追加します。同投稿では、段落ブロックを一つ配置して、それをCSSで装飾するものでした。 SWELL|コーポレートサイトでよくある追従バナーを設置するカスタマイズ | VOOL 本 […] 投稿元: Microsoft Power Auto...