<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「n年前の記事です」警告表示 | 央樹の葉</title>
	<atom:link href="https://www.terfes.net/tag/%e3%80%8cn%e5%b9%b4%e5%89%8d%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%a7%e3%81%99%e3%80%8d%e8%ad%a6%e5%91%8a%e8%a1%a8%e7%a4%ba/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.terfes.net</link>
	<description>ターフェス＠浅田和哉のまったり戯言ブログ</description>
	<lastBuildDate>Mon, 27 May 2019 15:39:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
<site xmlns="com-wordpress:feed-additions:1">7770719</site>	<item>
		<title>Jetpackのパブリタイズメッセージのカスタマイズのこと</title>
		<link>https://www.terfes.net/2019/05/28/post-1989/</link>
					<comments>https://www.terfes.net/2019/05/28/post-1989/#respond</comments>
		
		<dc:creator><![CDATA[ターフェス／浅田和哉]]></dc:creator>
		<pubDate>Mon, 27 May 2019 15:00:03 +0000</pubDate>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[「n年前の記事です」警告表示]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[パブリタイズメッセージ]]></category>
		<guid isPermaLink="false">https://www.terfes.net/?p=1989</guid>

					<description><![CDATA[自分用メモ。急にWordpressの下書き保存や公開・更新時に「更新できません」表示が出るようになった原因だったので、スニペット修正したお話。 目次 事の起こりスニペット改修……の前に今度こそスニペット改修おまけ 事の起 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>自分用メモ。<br>急にWordpressの下書き保存や公開・更新時に「更新できません」表示が出るようになった原因だったので、スニペット修正したお話。</p>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">事の起こり</a></li><li><a href="#toc2" tabindex="0">スニペット改修……の前に</a></li><li><a href="#toc3" tabindex="0">今度こそスニペット改修</a></li><li><a href="#toc4" tabindex="0">おまけ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">事の起こり</span></h2>



<p>WordPressが5.２にアップデートされたあたりから、急に先の通り「更新できません」の表示が出るようになって悩んでました。</p>



<p>ただ、一般的な「更新できません」トラブルと違って、警告メッセージだけで実際は保存も更新もできてると言うこと。<br>ただ保存中のまま、公開（更新）ボタンがグレーアウトするのでちょっと手間がかかるのが難点と言うくらいだったので無視してたんですけど、やっぱり気になるのであれこれと試したところ、CodeSnippetプラグインを止めたところ改善。<br>と言うことでスニペットで怪しいのがJetpackのパブリタイズメッセージをカスタマイズ（と言ってもTwitterしか有効にしてない上に、カテゴリーのスラッグをタグとして追加してるだけ）だったので、そこを止めて「更新できません」のトラブルは解消。<br>と言うことで、パブリタイズメッセージのカスタマイズ方法を改めて調べて見ました。</p>



<h2 class="wp-block-heading"><span id="toc2">スニペット改修……の前に</span></h2>



<p>恥を覚悟の上で改修前のスニペット（トラブルになるので使わないでください）を備忘録的に（ただこれも数年前、CodeSnippetプラグイン導入時にどこかで拾ってきたスニペットなのですが）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function change_publicize_save_meta( $submit_post, $post_id,　$service_name, $connection ){

    /*カテゴリの配列を取得*/
    $categories = get_the_category($post_id);
    /*先頭のカテゴリのスラッグを取得*/
    $category   = $categories[0]->slug;

    /*記事タイトルを取得*/
    $title      = get_the_title($post_id);

    /*パブリサイズ共有が有効な場合*/
    if ( !$publicize_custom_message ) {
        /*カスタムメッセージを編集*/
        $publicize_custom_message = sprintf(
        "Blog new Post:%s\n#LeafOfHeartwood #%s",$title ,$category);
        /*カスタムメッセージを適用*/
        update_post_meta( $post_id, '_wpas_mess', $publicize_custom_message );
    }
}
add_action( 'publicize_save_meta', 'change_publicize_save_meta', 10, 4 );
</pre>



<p>コメントごとコードをコピペしてたので特に説明も必要ないと思います（笑）</p>



<h2 class="wp-block-heading"><span id="toc3">今度こそスニペット改修</span></h2>



<p>と言う事で、こちらの記事を参考に（と言うかほぼコピぺ）でスニペットを新規に作成。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-reference">





<a rel="noopener" target="_blank" href="https://blog.sus-happy.net/jetpack-publicize-custom/" title="Jetpack for WordPressのパブリサイズ共有を色々カスタマイズしてみた - SUSH-i LOG" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" fetchpriority="high" decoding="async" src="https://i0.wp.com/blog.sus-happy.net/api/jetpack-publicize-custom/ogp.png?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Jetpack for WordPressのパブリサイズ共有を色々カスタマイズしてみた - SUSH-i LOG</div><div class="blogcard-snippet external-blogcard-snippet">様々な追加機能を用意してくれるJetpack for WordPressですが、その中のTwitterやFacebook等のSNSに投稿時に自動的に共有をしてくれるパブリサイズ共有で色々とカスタマイズしたい所があったので、調べたことのメモを...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://blog.sus-happy.net/jetpack-publicize-custom/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">blog.sus-happy.net</div></div></div></div></a>




</div>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function change_jetpack_publicize_content( $post_id, $post ) {

    $POST_MESS = '_wpas_mess';

/*先頭カテゴリのスラッグを取得*/
    $categories = get_the_category($post_id);
    $category   = $categories[0]->slug;

/*投稿,下書き,スケジュール待ちのみ*/
    if ( !in_array( $post->post_status, array( 'publish', 'future' ) ) ) {
        return;
    }

/*カスタムメッセージのPOSTがあったら無視*/
   if ( !empty( $_POST['wpas_title'] ) ) {
        return;
    }

/*カスタムメッセージがある場合は無視*/
    if( get_post_meta( $post_id, $POST_MESS, TRUE ) ) {
        return;
    }

/*共有する文言の成形*/
    $publicize_custom_message = sprintf( 'Blog new Post:%s #Leaf_of_Heartwood #%s', $post->post_title, $category );
    
/*カスタムメッセージとして登録*/
    update_post_meta( $post_id, $POST_MESS, $publicize_custom_message );
    
/*postmetaが削除されないように$_POSTにも代入*/
    $_POST['wpas_title'] = $publicize_custom_message;
}
/*JetPackのパブリサイズ共有のsave_postに対する処理の優先度は「20」*/
add_action( 'save_post', 'change_jetpack_publicize_content', 19, 2 );</pre>



<p><br>まぁ詳しいことは参考記事に譲るとしても、処理ルーチンが変わったようで。<br>多分、最近までは前のスニペットでも動いてたあたりからして、最近のJetpackのバージョンアップで完全に前のスニペットで使っってたフックが使えなくなったんじゃないかなぁと言う気がします。</p>



<p>参考サイトのコードとの違いは、ショートURLの追加を削除（前述の通りTwitterしかパブリタイズしてないのですが、ショートURLとは別にフルURL追加されているので不要と判断してのことです）<br>あとは、改修前と同じになるように、先頭カテゴリのスラッグをタグとしてメッセージに追加させるようにしているだけです。<br>まぁ数行<code>For</code>文か<code>While</code>文追加すれば、複数カテゴリのスラッグも追加できるとは思いますが文字数足りなくなりそうなのと自分が1つしかカテゴリーを選ばないので、最初に来るカテゴリーのみとしてます。</p>



<p>とりあえず、これで「更新できません」のメッセージが消えてWordpressそのものの動作は安定したので様子見です。</p>



<h2 class="wp-block-heading"><span id="toc4">おまけ</span></h2>



<p>このブログの「n年前の記事です」の警告表示も、実はCodeSnippetで登録してるスニペットです。<br>と言うか、昔はプラグインもあったらしいけど今はなくなってるので、ググって最終的にQiitaで見つけてきたプラグインソースをスニペットで使ってます。<br>一応ソースは下のもの（元ソースからHTMLタグを<code>&lt;span&gt;</code>から<code>&lt;div&gt;</code>に、インナーCSSだったのをクラス指定に変更してます）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function show_old_alert($content) {
  if(!is_single($post)) return $content;
  $diff = strtotime(date("Ymd")) - strtotime(get_the_date("Ymd"));
  $diff = $diff / 60 / 60 / 24;
  if($diff > 365){
    $diff = floor($diff / 365);
    return "&lt;div class='old_alert'>この記事は".$diff."年以上前の記事です。&lt;br>情報が古い場合や、リンクが切れている場合がありますのでご注意下さい。&lt;/div>".$content;
  }else{
    return $content;
  }
}
add_action( 'the_content', 'show_old_alert' );</pre>



<p>で、クラス指定に切り替えたのは頭に警告マーク入れたかった（<code>::bofore</code>で指定）からですが、上下中央揃えにしたくて<code>flex-box</code>で対処</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.old_alert {
	display:flex;
	border:1px solid #f00;
	border-radius:10px;
	padding:0 10px;
	align-items: center;
}

.old_alert::before {
	display:block;
	width:44px;
	padding-right:10px;
	font-family:"FontAwesome";
	content:"\f071";
	font-size:40px;
	color:#fcc800;
}</pre>



<p>これでちゃんと表示できてるからいいやで終わってますが、多分もう少しスマートに書けるんじゃないかなぁとは思ってます。もしそうならアドバイスくださいｗ<br>まぁ参考になればと言う事で締めておきます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.terfes.net/2019/05/28/post-1989/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1989</post-id>	</item>
	</channel>
</rss>
