質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

Q&A

解決済

2回答

2234閲覧

ワードプレスで記事投稿する際に、URLにパラメータを付与して定期実行したい(手動で後からパーマリンク修正などをする形ではなく)

gugupoo

総合スコア31

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

0グッド

0クリップ

投稿2019/06/14 02:02

現在さくらVPSに、サーバー設定を行って、ワードプレスをインストールしている状態です。
wp_insert_post関数などを用いてワードプレス管理画面からでなく
PHPファイルを実行して、投稿という形式は出来ており、cronでの定期実行も出来ています。

そして、行いたい事とは
通常の記事投稿でなく、
URLにパラメータを付与して記事投稿をしてRSSフィードにそのURLが掲載されて配信されるという状態にしたいと思っています。
cronでそのパラメータ付URLの形式 で定期実行したいと思っています。
ですのでcron云々の部分は関係ないと言えばないのですが、
手動でパーマリンクを後からその都度修正するのではなくて
プログラムによる設定でパラメータを付けたものを定期実行に組み込みたい
という狙いです。
(狙いそのものとしてはCSSのどこかを指定したURL発行などで変化をつけたりしたいという狙いです)。

URLの末尾に例えば ?aaa=1 などを付けて定期実行をしたいといった狙いなのですが、

現在出来ていることとしまして
・普通の記事投稿
・パーマリンク設定の、カスタム構造で /%postname%/ などを指定することにより
「投稿済の記事をあとから」 記事編集画面の編集ボタンを押すことによって
URLの末尾部分を好きなものに変えることはできる。

といった状態です。
(それでもパーマリンクを手動で任意の文字に変えることはできますが
?や=をパーマリンクにいれてもその2つなどはカットされます。
パーマリンクを手動で編集すると?や=は削除されてそれ以外の文字がパーマリンクに残る、というのはひとまず置いておきまして)

まずはcronで自動実行する際に、

例えば変数
$ttt = "?aaa=1";

などどこかで指定しておいて
そもそもURLにパラメータを付けた形で

http://~~~~~~~~~
ではなくて、
http://~~~~~~~~~?aaa=1
として投稿する方法はありませんでしょうか?

プラグインなどでなく、出来たらファイルを少し書き換えるような方向で解決できたらとても有難いのですが;
宜しくお願い致します!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tomak

2019/06/15 01:02

RSSからのURLクエリーによって表示デザインを変更したいということでしょうか? パーマリンクのカスタムURLを変更すればURLクエリーがつくのと同じ意味になりますが、こういう意味ではないのですよね? もう少し、技術的な話の前に、何をしたいのかアイディアを具体的に書かれたほうが良いと思います。
gugupoo

2019/06/15 12:35

Tomak様 有難うございます。 >RSSからのURLクエリーによって表示デザインを変更したいということでしょうか? はい、こちらになります。 パラメータを付けて、RSSで配信された段階ですでにそのパラメータが付いた形で RSSでURLを配信したいのです。 >パーマリンクのカスタムURLを変更 こちらを手動で1記事1記事全部変えればよいのですが その手間を自動化できないかという質問になります。 これがしたいことそのままになります。 RSSは、これを取得していただいた個人ユーザー、色々なサイト、ブログ、 から私のブログに飛んでくるステップであると思うのですが、 その段階ですでにURLにパラメータがついた形で配信することは・・無理でしょうか・・;
guest

回答2

0

ベストアンサー

RSS の配信時に URL にパラメータをつけたいのであれば、パーマリンクそのものに URL パラメータをつけようとせず、the_permalink_rss フィルターを利用してフィード配信時にのみ URL にパラメータを付与するのが良いかと思います。

例えば cron での自動実行の際に呼び出す関数内で

php

1<?php 2 3// 付与する URL パラメータを cron から受け取る. 4$url_param = '?aaa=1'; 5 6// wp_insert_post 関数の返り値である投稿 ID を変数で受けておく. 7$post_id = wp_insert_post( array( 8 ... 9) ); 10 11// 例えば url_param カスタムフィールドに URL パラメータを入れておく. 12update_post_meta( $post_id, 'url_param', $url_param );

のようにしてカスタムフィールドに URL パラメータを入れておき、適用しているテーマの functions.php で

<?php /** * Filters the permalink to the post for use in feeds. * * @since 2.3.0 * * @param string $post_permalink The current post permalink. */ function custom_permalink_rss( $post_permalink ) { global $post; $url_param = get_post_meta( $post->ID, 'url_param', true ); return $post_permalink . $url_param; } add_filter( 'the_permalink_rss', 'custom_permalink_rss' );

とすれば、フィード配信時の URL にカスタムフィールドに保存した URL パラメータを付与することが可能です。

投稿2019/06/15 23:43

YukiYamashina

総合スコア1011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gugupoo

2019/06/16 01:02

YukiYamashina様 有難うございます。頂けたご回答を元に、自分でもよく理解できないまま cronでの実行ファイル、投稿側のwp_insert_post関数の使われているファイルと、 function.phpの方の2つに上記を設定させて頂いて実行したところ、 確かに配信RSSを自分で見てみると?aaa=1がついてRSS情報にありました! こういう風にできるのか、と少し戸惑っており、 しかし間違いなくできているので、 自分で再度頂けた回答を吟味して、しっくり納得いって使えるように さらに、例えば投稿記事内容によって、自分のやりたい条件によって ?aaa=1 ?aaa=2 など使い分けてはっきり思い通りに使いこなしていきたいと思います。 有難うございました!
guest

0

JavaScriptでRSS用のフィードURLを判定して、下記のようにCSSのクラスを追加すればOKだと思います。下記はjQueryでCSSクラスを要素に追加しています。JavaScriptでも同じことができます。

html

1<script> 2(function($){ $(function(){ 3 if (document.location.pathname.indexOf('/feed/') >= 0) { 4 $('要素').addClass('RSS用CSSクラス名'); 5 } 6}); })(jQuery); 7</script> 8 9</body> 10</html>

この辺りは、運用ルールということになりますが、URL相対パスの最初、または2つ目をカテゴリーとして決めて、CSSをスイッチするという手法も可能です。

JavaScriptでこんな感じで配列展開すればURLパスのカテゴリを取得できます。

js

1// URLパスが「/category/sub/path/to/url」だとする 2var pathes = document.location.pathname.replace(/^//, '').split('/'); 3 4console.log(pathes); 5// ['category', 'sub', 'path', 'to', 'url']

投稿2019/06/15 16:25

編集2019/06/15 16:35
Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gugupoo

2019/06/16 01:04

Tomak様 有難うございました!先程頂けた全ての回答を、上から視覚順に見させて頂いて、上記で確認できたのでそちらをベストアンサーとさせて頂きましたが、 JavaScriptでRSS用のフィードURLを判定して、CSSのクラスを追加という具合で、 今から自分も再度こちらもやらせて頂きます。有難うございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問