IT技術に関する情報掲載サイト

プログラミングに関することを掲載します。

WP_Queryで「タイトルもしくはカスタムフィールドに一致したら」という条件で検索する方法

色々なやり方があるようですが、ちょっと強引にやってみました。

 

function.php

add_filter( 'posts_where', function ( $where ) use ( $title ) {
global $wpdb;
$pattern = '/\( mt1\.meta_key = \'_title\' AND mt1\.meta_value = \'(.+?)\' \)/u';
$replacement = '(wp_posts.post_title LIKE \'%$1%\')';
$where = preg_replace($pattern, $replacement, $where);
 
return $where;
} );

 

archive.php

meta_queryの部分を抜粋

$keyword_meta_query=array(
'relation' => 'OR',
array(
'key' => 'access',
'value' => $_GET['keyword'],
'compare' => 'LIKE',
),
array(
'key' => 'address',
'value' => $_GET['keyword'],
'compare' => 'LIKE',
),
array(
'key' => 'zip',
'value' => $_GET['keyword'],
'compare' => 'LIKE',
),
array(
'key' => 'tel',
'value' => $_GET['keyword'],
'compare' => 'LIKE',
),
array(
'key' => 'fax',
'value' => $_GET['keyword'],
'compare' => 'LIKE',
),
array( // タイトルを検索対象にするため function.phpでつかっている
'key' => '_title',
'value' => $_GET['keyword'],
),
);

 

ダミーのメタキーワードの_titleをつくって、post_whereのフィルターで、その部分を置換してしまう方法です。

echo $the_query->request;

SQLをみれるので、内容をみながらやるのもいいかもしれません。

他にも方法あるのですが、参考まで。

 

Wordpressで「公開に失敗しました。 無効なパラメータ: "status"」とエラーがでたときの対応方法

他の方が作っててそれをカスタマイズする形でWordpressをつくっていたら、「公開に失敗しました。 無効なパラメータ: "status"」というエラーがでて、いろいろ調べてみたけど、いい解決方法が見つからず。

wp-config.phpのwp_debugをONにしたら、以下のエラーがでてました。

「status" タクソノミーの "name" プロパティー (status) は REST API Posts Controller の既存のプロパティーと衝突します。エラーを避けるため、タクソノミーを登録する際にカスタム rest_base を指定してください。」

 

どこに、statusタクソノミーがどこにあるかわからないので、以下の関数をfunction.phpに追加したら、なおった。

 

function register_custom_taxonomy() {
    $args = array(
        // 他のプロパティーの設定
        'rest_base' => 'custom-status' // カスタムのrest_baseを指定
    );
    register_taxonomy( 'status', 'post', $args );
}
add_action( 'init', 'register_custom_taxonomy' );

 

Macでhttpのサイトにアクセスした際に「このページは動作していません」と表示されたときの対応方法

なぜか、httpでアクセスしたときは、「このページは動作していません」と表示され、ページがみれなくなり、httpsでアクセスした場合は、正常に表示される問題にぶつかったときの対応方法です。

セキュリティソフトで、「ESET Cyber Security」を使っている場合は、どこかの設定がおかしくなっているのですが、調べるのが面倒なので、既定値に戻すのが手っ取り早いです。方法は、

ESETのアイコンをクリックして管理画面を開き

左の設定をクリックしていただき、「すべての設定を規定値に戻す」をクリックすると、既定値に戻って、サイトが見れる場合があります。

 

 

ただし、自分で設定をカスタマイズしている場合は、設定し直す必要があるので、要注意してください。

 

 

Install it or recompile php without --disable-jsonとエラーがでたとき

いろいろインストールしているとインストールのエラーが出て困ることが多いです。

composerをインストールしようとしたら、エラーが、以下のようにでました。

Some settings on your machine make Composer unable to work properly.

Make sure that you fix the issues listed below and run this script again:

 

The json extension is missing.

Install it or recompile php without --disable-json

 

今回は、Install it or recompile php without --disable-jsonというメッセージをみて、php-jsonを入れればOK。

yum install php-json

javascriptのmatch関数の正規表現を変数を使う場合

Javascriptが苦手なので、こういうこと細かいことがわからず、すぐ忘れてしまうので、メモ程度です。

 

RegEx関数を使うとうまくできます。

基本構文は、以下となります

new RegExp( 正規表現パターン, フラグ );

使い方は、

rep="あ";
// 正規表現の条件を作成
var pattern = new RegExp(rep, "g");
strPref.match(pattern)

 

簡単だけど、知らないとできないですね

Advance Custom Field Proの繰り返しタイプをつかったのに、投稿で保存されない

WordpressのAdvance Custom Field Proで繰り返しタイプを使って項目を作成したのに、いざ投稿ページから、登録しようとしたら、入力項目が表示されるのですが、値が保存されない現象が発生しました。

 

よくよくしらべると、繰り返しのフィールドラベルとフィールド名が空白で、サブフィールド内しか登録されていなかったためです。

 

 

Wordpressでカスタムフィールドを登録する際に、バリデーションチェックにひっかからないので、登録する際には気をつけましょう。