【wordpress】カテゴリを指定して記事情報を出力する

特定のカテゴリのタイトルや記事内容を一覧にするサンプルコード

get_posts関数で、どの記事の情報が欲しいか正しく指定するのが大事。

<?php
//カテゴリ別で出力

//get_postsは、条件にマッチする投稿情報を取得する
//numberpostsは取得する投稿数。-1で全件。categoryはカテゴリのID。
$posts = get_posts('numberposts=2&category=3');
global $post;

if($posts) {
foreach($posts as $post) {
setup_postdata($post); //投稿記事に関連するグローバル変数を設定する。the_content()が使えるようになる。
echo the_title() . "<br>"; //タイトルを出力
//echo the_content() . ""; //内容を出力

}
}
?>

【UWSC】IE9以上でファイルダウンロード時に出る通知バーのボタンを押す方法

IE9以上で出現する通知バーのボタンをUWSCで押す方法

下の画像の保存ボタンを押したい
通知バー

//サンプルコード
////////////////////////////////////////////////////
// IEのIDを取得
id = GETID("Internet Explorer", "IEFrame")

//通知バーのハンドル(識別番号)を取得する。
handle = 0
repeat
sleep(0.5)
handle = GETCTLHND(id,"DirectUIHWND",2)
print handle //取得できなければ、0(ゼロ)が返る
until 0 < handle //ハンドルをIDに変換 id2 = HNDtoID(handle) //保存ボタンを押す CLKITEM(id2, "保存", CLK_ACC) //「ダウンロードが完了」と出るまで待ち //インターネットオプション → 詳細設定の「ダウンロードの完了時に通知する」にチェックを入れておくこと Repeat Sleep(1) Until Pos("ダウンロードが完了", GETSTR(id2, 1, STR_ACC_STATIC))>0 //通知バーを閉じる CLKITEM(id2, "閉じる", CLK_ACC) ////////////////////////////////////////////////////

UWSCでたまに聞く、ウインドウハンドルとは

ハンドルとは、ウィンドウやコントロールに割り当てられている識別番号のこと。
ウィンドウを開くとそのとき空いていた番号が適当に与えられる。よって、同じウィンドウでも開くたびに番号は変わる。

UWSCでは「GETCTLHND」で取得できる。
たまたま開いていたIEのハンドル値を取得したら「132424」と返ってきた。
(取得できなければ 0(ゼロ)が返る)

print GETCTLHND(id,"DirectUIHWND")

「HNDtoID」を使えば、ハンドル値をUWSCのIDに変換できる。

【PHP】クエスチョン(?)がある演算子は三項演算子

サンプルコードにクエスチョン(?)を使った演算子らしいものを発見。
WEBで調べるのに少し手間取ったのでメモ。

三項演算子という。3つの項目を使用する唯一の演算子らしい。

---------------------------------------------------------
書式:

[条件式] ? [真の場合] : [偽の場合]
//条件式を評価し、TRUEであれば[真の場合]、FALSEであれば[偽の場合]を返す
---------------------------------------------------------

---------------------------------------------------------
サンプルコード:

$_SESSION["category"] = isset($_POST["category"]) ? $_POST["category"] : "";
//POSTの値があればPOSTの値を、なければ空文字をSESSIONに格納する
---------------------------------------------------------

【PHP】変数名に変数を使う方法

変数名に変数を使うときは、{}を用いて変数名を明示すること。

こんな感じ。

$variable1 = name;

//{}を使ってどこまでが変数名か示す
${'variable2' . $variable1} = "パイナップル";

echo variable2name; //出力結果:パイナップル

【wordpress】特定のカテゴリのみ404エラーになる

まず結論。
カテゴリ名と同じ名前のファイルがルートディレクトリにあると、404エラーの原因になる。なので、そういう構成は避ける。

wordpressで作ったブログのサーバーを引越しした際、「PHP」というカテゴリのページだけ404エラーが起きるようになった。他のカテゴリ、「mysql」「JQUERY」「network」なんかは問題ないのに・・・。

原因は独自ドメインのルートディレクトリ(wordpressのindex.phpと同じフォルダ)に「php.cgi」が存在していたため。

パーマリンク設定をカスタムの「/%category%/%post_id%/」としていたが、これが「php.cgi」のファイル名とかぶるため誤作動?しているらしい。

「php.cgi」ファイルをフォルダから削除することで解決。

【UWSC】同じタイトルで同じクラス名のウインドウを区別する

UWSCでIEを自動操作していたら下記のような場面に遭遇。

名前を付けて保存ダイアログ

手前の「名前を付けて保存」ダイアログの「はい」を押したい。

これまでなら、

CLKITEM(GETID("名前を付けて保存","#32770"),"はい", CLK_LEFTCLK)

などと記述すればよかったのだが今回はうまくいかない。
理由は「名前を付けて保存」というタイトルで2つのダイアログが出ているため。

そこで区別するコードを作った。

//サンプルコード
/////////////////////////////////////////////////////////////

// 全てのウインドウIDをゲット(ALL_WIN_ID[]変数に入る)
for i = 0 to GETALLWIN()-1

//「名前を付けて保存」のダイアログであるなら、
ifb (STATUS(ALL_WIN_ID[i], ST_CLASS) = "#32770") AND (STATUS(ALL_WIN_ID[i], ST_title) = "名前を付けて保存")

//ウインドウ内のテキストを取得。取得ができたらなら、
ifb 0 < GETITEM(ALL_WIN_ID[i],ITM_ACCTXT)

//取得したテキストに「上書きしますか」の文言があるか。あればクリック。GETITEMで取得した情報は配列変数 ALL_ITEM_LIST[] に格納される。
/////////////
ifb 0 < POS("上書きしますか",ALL_ITEM_LIST[0]) //目当ての文字列はALL_ITEM_LIST[0]にある
CLKITEM(GETID("名前を付けて保存","#32770"),"はい", CLK_LEFTCLK)
endif
/////////////

endif

endif
next
/////////////////////////////////////////////////////////////

UWSCでダイアログのボタンを押す

スクリプトでIEを操作中、次のようなエラーダイアログが出た

error_dialog

「OK」ボタンを押すだけのサンプルコード

CLKITEM(GETID("Windows Internet Explorer","#32770"),"OK", CLK_ACC or CLK_MUSMOVE)

ちなみに、#32770はダイアログのクラス名

UWSCで配列を全て展開して出力する

DIM array[] = "すいか","いちご","れもん" //配列

//LENGTHで配列の数を確認し、その分だけ展開させる。
//要素数は「0」から始まるので、LENGTHの結果から-1する。
FOR i = 0 TO (LENGTH(array) - 1)
PRINT array[i]
NEXT

UWSCで改行コードをすべて削除や置換する方法

//改行を全て削除する
moji = REPLACE(moji, "<#CR>", "")

これで改行ができない場合は、CR(キャリッジリターン)とLF(ラインフィード)を指定して削除する。次のコードを追加。

moji = REPLACE(moji, chr(13), "" ) //CRを削除
moji = REPLACE(moji, chr(10), "" ) //LFを削除