.wpress の解凍で学ぶ npm と npx の違い

JavaScript 系でよく使われる npm と npx の違いがピンときていなかった。

よく以下のように説明されている。

npxとはエヌピーエックスと読み、Node Package eXecutor の略語であり、Node.jsパッケージの実行を一時的に行うためのコマンドラインツールです。
簡単に言えば、使いたいパッケージをインストール + 実行 + アンインストールをまとめて行います。
つまり、一時的にパッケージを利用でき、使用後はプログラムが残りません。npmとは違い作業環境を汚さずに利用できる便利なコマンドとなっています。

これを初見で理解できる人はそうはいないような?

私の場合、.wpress (WordPress プラグイン All-in-one-Wp-Migration がワードプレスサイトをインポート/エクスポートするために生成するファイル形式)を解凍する際に npx コマンドを使うケースがあったので、ようやく得心した。

npx wpress-extract filename.wpress

とすると、npx wpress-extract があたかもコマンドラインツールのように .wpress を解凍してくれます。

元々は JavaScript なはずなのに小癪な (^^;)

ところで All-in-one-Wp-Migration の評判が微妙なのは
「WordPress サイトの引越しにはAll-in-one-Wp-Migration プラグインを使え」
ばかりで、この手の情報が流通していないからではないかと思ったりする。

実用的な All-in-one-Wp-Migration の使い方

評判がいいようなので追記。

ある程度のサイトの場合、All-in-one-Wp-Migration を使ったとしてもファイルサイズは数百メガになり、大抵のレンタルサーバーでは、アップロードサイズ上限のためこれを一気にアップロードすることはできない。

で、有償版を購入・・・となる流れなんだが、待ってほしい。

上で書いたように .wpress は npx をうまく使うことでローカル環境で解凍可能だ。だから、

解凍後、必要なファイルのみ FTP などでアップロードした方が現実的

ではないかと思う。

なお、記事内容は database.sql というファイルに入っています。

 

 

おそるべし、アマゾン

秋葉
ねぇねぇ、ちょっといいかな

axia
ナニ、ソノ嫌ナ予感シカシナイ問イハ?

秋葉
axia 、ちょっと前に WordPress プラグイン紹介にかこつけた
屈折感情丸出し

指環に関する記事書いてたじゃない?


axia
………

秋葉
間違えて指環リンク踏んじゃったんだ

axia
1回くらいいいんじゃない。

そしたら?

秋葉
アマゾンからこんなメール届いた。

 

axia
さすが、アマゾン。アフターフォローも完璧。

 

秋葉
続きがある。これ。

 

axia
関連商品までくるか…。

またそのチョイスのセンスがツボ心得ている。

秋葉
最後のピンクダイヤのワンポイントは男の俺でも可愛いいと思う。

アマゾンAI、優秀だね。

 

 

axia
ナニ、コノ負ケタ感…

 

 

 

にほんブログ村 ネットブログへ
にほんブログ村 恋愛ブログ 30代の恋愛へ

 

妻僕。さんに聞いてみました

当サイトを作るうえでかなりの部分を『妻と僕。』さんのサイトを参考にさせてもらった。

なかでも感心したのは

レスポンシブ対応!幅が比率指定のサイドバーを下端で追従させる方法-WordPress(Twenty Seventeen)

であった。

当サイトの記事ページをスクロールするとサイドバーがいっしょについてくると思うが、その機能を実現させる方法が簡潔にまとまっている。

いたく感心した私は、

これ、他のページにも使えない?

とよからぬことを思い、ちょっと試してみた。(よせばいいのに…)

どうやって、この機能を実現しているか細かいところまでは読み取れない私は、それでも無い知恵をしぼってコードを眺めていた。


下記コードをコピーして、header.phpのheadタグ内にある<?php wp_head(); ?>の下へ貼り付けます。

ふむ。

<?php if ( is_single() ) : ?>
<script>
jQuery(window).on( "load scroll resize" , function(){
	//画面幅の取得とサイドバー有無の境界幅を入力
	var w = window.innerWidth /*スクロールバー込みの画面幅*/ 
	var x = 768; /*サイドバー有無の境界幅*/
	//サイドバーがある場合に適用
	if (w >= x) {
		//各要素の高さを取得 
		var windowH = jQuery(window).height(); /*表示画面の高さ*/ 
		var pageH = jQuery('#page').height(); /*表示ページの高さ*/ 
		var headerH = jQuery('#masthead').outerHeight( true ); /*ヘッダーの高さ*/ 
		var mainH = jQuery('#primary').outerHeight( true ); /*記事の高さ*/ 
		var sideH = jQuery('#secondary-child').outerHeight( true ); /*サイドバーの高さ*/ 
		var footerH = jQuery('#colophon').outerHeight( true ); /*フッターの高さ*/ 
		var paddingH = jQuery('#content').outerHeight( true ) - jQuery('#content').height(); /*余白の高さ*/ 
		//サイドバーの固定と解除条件を計算 
		var viewSide = headerH + paddingH + sideH ; /*ページトップからサイドバー下端までの高さ*/ 
		var fixedSide = viewSide - windowH ; /*サイドバーを固定するスクロール高さ*/ 
		var scrollBottom = pageH - windowH - footerH ; /*フッターが画面に表示されるスクロール高さ*/ 
		//スクロール値を取得 
		var scrollTop = jQuery(this).scrollTop();
		//記事がサイドバーより長い場合に適用
		if( mainH > sideH ) {
			//サイドバー下端までスクロールしたらサイドバー下端で追従
			if( scrollTop > fixedSide ) {
				jQuery('#secondary-child').addClass('fixed-side'); /*サイドバー固定のクラス付与*/ 
				//サイドバー固定時のサイドバー幅を計算
				var secondaryW = jQuery( "#wrap" ).width() - jQuery( "#primary" ).outerWidth( true );
				jQuery( "#secondary-child" ).css('width', ''); /*サイドバー幅リセット*/
				jQuery( "#secondary-child" ).css( "width" , secondaryW ); /*計算したサイドバー幅を付与*/
			}else{
				//条件から外れたら固定クラスを削除し幅をリセット
				jQuery('#secondary-child').removeClass('fixed-side'); /*サイドバー固定のクラス削除*/
				jQuery( "#secondary-child" ).css('width', ''); /*サイドバー幅リセット*/
			}
			//フッターまでスクロールしたらサイドバー下端をフッター上端に連結
			if( scrollTop > scrollBottom){
				jQuery('#secondary-child').removeClass('fixed-side');
				jQuery('#secondary-child').addClass('bottom-side');
			}else{
				//条件から外れたらクラスを削除
				jQuery('#secondary-child').removeClass('bottom-side');
			}
		}
	} else {
		//サイドバーがない場合に適用
		jQuery( "#secondary-child" ).css('width', ''); /*サイドバー幅リセット*/
	}
});
</script>
<?php endif; ?>

もちろん、このロジックは追えない。
だが、先頭の php if ( is_single() ) から察するに、これは「これから表示するコンテンツが single なら、script 以下のコードを実行せよ」ということをやっているのだろうと推論した。いや、そうに違いない。女の感だ。

ならば、例えば、アーカイブページでこの機能を実現したいならば、

php if ( is_single() || is_archive() )

というズルをすればなんとかなるのではと考えた。

果たして…

この状態から

スクロールすると…

 

ごくり…

 

動いたっーーー!!

 

が、なぜか文字が縦………。

 

秋葉ちゃん

axia
コノヤロ

 




どこを直していいかわからないので妻僕。さんに聞きにいく(詳細はそちらのコメント欄参照)。

「今のままでは、サイドバーの幅 = 0 になっているので、 archive.php にも手を入れ、id を付与しなさい」

というようなことを言われる。

すると…

 

おおー、できました。

さすが、本家。

ついでに is_search() も効かせるようにしました。

AXIA

 

にほんブログ村 ネットブログ ネット生活へ

WordPress + yoast SEO で簡単にパンくずリストを設置

 

当ブログは、WordPress に テーマ twentyseventeen 改、プラグインに yoast SEO などを乗っけて運用しますが、yoast SEO だと簡単にパンくずリストが設置できるんですね。知りませんでした。最近まで All in One SEO の方を使っていたもので。確か All in One の方にはなかったはず。

まず、yoast SEO の設定画面を出して…

パンくずリストを「有効」に変更(デフォでは無効)。他項目は適宜変更。

まず、これを設定。

 

次に、以下のコードをパンくずリストを出したいファイル上に設置。

今回は、次のように挿入しました(19 行目以下に注目)。

これだけです。

 

すると……

おおっ! ちゃんと表示されてますね。

 

それにしても、秋葉ちゃん、なんて記事書いてんだよ…orz