プラグインを使用せずに、WPブログのすべての記事をFacebookに自動公開したいと思います。
私はそれを行うためにいくつかの実用的なコードを書きました、そしてそれは大丈夫です...しかし私は新しい記事を公開するときだけこのコードを呼び出す必要があります(改訂や自動保存のためではありません)。
それはあなたが見る必要がある私のfunction.phpファイルの一部です:
add_action( 'save_post', 'koolmind_facebook_post_article',3 );
function koolmind_facebook_post_article( $post_id ) {
/* configuration of facebook params */
....
....
/* end config */
if ( !wp_is_post_revision( $post_id ) && !wp_is_post_autosave( $post_id ) ) {
/* retrieve some data to publish */
/* invoke my code to publish on facebook */
}
}
「新しい記事を追加」をクリックするとすぐにコードが呼び出され、空のドラフトがFacebookページに送信されます。さらに、記事の本文に1つの文字を挿入するとすぐに、自動保存がトリガーされ、新しい投稿(ほとんど空)がFacebookに再度送信されます。
この自動公開をブロックし、[公開]ボタンを押したときにのみデータをFacebookに送信したいだけです。
それは可能ですか?
アップデート
ついに私は問題を見つけました。fbコード内にエラーがありました。現在の問題は、投稿を更新するときに複数の公開を回避することです。
コードは次のとおりです。
add_action('pending_to_publish', 'koolmind_facebook_post_article');
add_action('draft_to_publish', 'koolmind_facebook_post_article');
add_action('new_to_publish', 'koolmind_facebook_post_article');
function koolmind_facebook_post_article( $post_id ) {
require_once 'facebook/facebook.php';
/* some code here */
//verify post is not a revision
if ( !wp_is_post_revision( $post_id ) ) {
$post_title = get_the_title( $post_id );
$post_url = get_permalink( $post_id );
$post_excerpt = get_the_excerpt();
$post_image = 'http://.../default.jpg'; //default image
if( $thumb_id = get_post_thumbnail_id( $post_id ) ){
$image_attributes = wp_get_attachment_image_src( $thumb_id );
$post_image = $image_attributes[0];
}
/* some code here */
}
}
問題を説明させてください:
これらの3つのフックを使用しても問題はありませんが、注目の画像がデータベースに保存される前にコードが実行されるため、$post_imageは常にデフォルトの画像と同じになります。
代わりにpublish_postフックを使用すると、注目の画像が適切に設定されます(おそらく、すべてのデータが保存された後にこのフックが呼び出されるため)が、投稿を更新するとFacebookへのデータ送信を回避できません(wp_is_post_revisionは起動されないようです)。
あなたが良い考えを持っていることを願っています...今、コードはほとんどOKです!:)