かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress カスタム投稿タイプのslug (URI)から投稿IDを取得したい

slug名から投稿を取得するには get_page_by_path を使う

get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' )
出典: get_page_by_path() | Function | WordPress Developer Resources

<?php
$post = get_page_by_path('{slug}', 'OBJECT', $post_type);
$postID = $post->ID;
echo $postID;

カスタム投稿タイプで取得するには第三引数にpost_typeを渡す必要があるので、第二引数にはデフォルト値のOBJECTを指定してオブジェクト形式で取得するのが楽。
第二引数でARRAY_Nとか指定したら別の形式にも出来るっぽいけど使い方が所がイマイチ分からん…

post オブジェクトからslug名を取得する

<?php
$slug = $post->post_name;

おまけ タクソノミー (分類 e.g. タグ・カテゴリー) Term(タグ名・カテゴリー名)ののSulg名からtermを取得する方法

term_slugからもtermアーカイブのURL取得できるget_term_linkのコードを見ていたら、内部でslug名のときはget_term_byを使っていたので、これを使えばterm_slugからtermオブジェクトを取得できる事を知りました。

get_term_by( string $field, string|int $value, string $taxonomy = '', string $output = OBJECT, string $filter = 'raw' )
出典: get_term_by() | Function | WordPress Developer Resources

<?php
$term = get_term_by('slug', '{term_slug}', $taxonomy);
var_dump($term);

 
内部的にSQL発行してそうだし、パフォーマンス面からもこういうのあまり多用しなくて済む設計にしておきたい。


[参考]

WordPress 管理画面の固定バー(Admin bar)にカスタムボタンを設置したい

WordPress管理画面の上部にあるAdmin barにカスタムボタンを設置する方法のメモ

functions.php

<?php
add_action('admin_bar_menu', 'my_custom_admin_bar_button', 100);
function my_custom_admin_bar_button($wp_admin_bar) {
  $args = [
    'id'    => 'my_custom_button',
    'title' => '表示される文字',
    'href'  => '#',
    'meta'  => [
      'class' => ''
    ],
  ];
  $wp_admin_bar->add_node($args);
}

これでAdmin barにカスタムボタンが設置できました。
実際に表示されるボタンのIDはwp-admin-bar-というprefixが付くので#wp-admin-bar-<idに渡した値>という感じになります。

ボタンの表示される位置はadd_actionの第三引数の数字で設定します。(カスタム投稿を追加する時のメニュー位置と同じ要領)

  • wp_admin_bar_wp_menu – 10
  • wp_admin_bar_my_sites_menu – 20
  • wp_admin_bar_site_menu – 30
  • wp_admin_bar_updates_menu – 40
  • wp_admin_bar_comments_menu – 60
  • wp_admin_bar_new_content_menu – 70
  • wp_admin_bar_edit_menu – 80

$wp_admin_bar->remove_node( $id )を使えばもともと表示されているメニューを消すことも出来る。
cf. Function Reference/remove node « WordPress Codex

表側のサイトでAdmin barを表示させなくする方法

表側のサイトでログインしててもAdmin barを表示しない方法。
functions.phpに下記を追加

functions.php

<?php
add_filter( 'show_admin_bar', '__return_false' );

 
WordPress触ってないとすぐ忘れる。


[参考]

npm script でファイルに書いたスクリプトを実行したい。

webpackやgulpを必要とするまでではないけど、npm scriptに直接書くには長過ぎるから、JavaScriptファイルに書いておいてnpm scriptで実行したいようなケース。

npm scriptでファイルを実行

npm scriptでnode <script_file>が実行されるようにすればOK

package.json

{
  "scripts": {
    "build": "node my_script.js"
  }
}

実行
npm

$ npm run build

yarn

$ yarn build

本当に簡単なものなら、👇でええやん。って話では有るけど。。。

$ node my_script.js

NPMな彼女デス?ニッポン萌えな彼女デス?

NPMな彼女デス?ニッポン萌えな彼女デス?

NPMな彼女とは...🤔