ナム山

家最高 今年一年でサックスが吹けるようになるか観測中

PHPの配列に値を追加する(resister_post_typeのオプションをフックしてまとめて追加する)

前回、Wordpressでresister_post_typeを設定する内容を扱った。
カスタム投稿の一覧表示を作る - ナム山

この方法ならば、追加したい固定ページの登録内容がずらっと並ぶわけだが、似たようなオプションを書き連ねるのがスマートでないと感じた場合はオプションの配列を別にまとめてフックできるらしい。

add_filter('register_post_type_args', 'movies_to_films', 10, 2);
function movies_to_films($args, $post_type){
 
    if ($post_type == 'movies'){
        $args['rewrite']['slug'] = 'films';
    }
 
    return $args;
}

引用: 
https://developer.wordpress.org/reference/hooks/register_post_type_args/

rewriteの配列に'film'を別アクションから引っ掛けているわけだ。
ここで配列に追加する記法が面白かったので少し調べてみた

参考: https://uxmilk.jp/8880

register_post_typeのオプションのように、連想配列であれば
$targetArray['key'] = 'value';
という具合で追加できた。

<?php
$args = array('test' => '001', 'test02' => '002');
$args['test03'] = 'ccc';
var_dump($args);

//結果
array(3) {
  ["test"]=>
  string(3) "001"
  ["test02"]=>
  string(3) "002"
  ["test03"]=>
  string(3) "ccc"
}
?>

配列もそのまま追加できる

<?php $args['test03'] = array('ccc','ddd'); ?>

配列、ループ処理あたりを理解、使えるようになってくると一気に考え方が論理的になる感じがする。
PHPは便利だな〜