在xmlrpc_Publish_POST期间检查POST格式

时间:2012-11-02 作者:Edbury

WordPress显然在$post 对象在期间publish_post 这(通常)不是问题,因为您可以通过get_post_format( $post->ID ) 循环外部。

这似乎在xmlrpc_publish_postapp_publish_post. 人们必须解决这个问题,才能在移动/桌面应用程序上使用插件/主题功能。

我的具体代码如下,以防我这边出错。

function posse_twitter( $post_ID ) {
    error_log(\'Executing posse_twitter()\');
    global $post;
    // check post format if necessary
    if ( get_post_format( $post->ID ) != \'status\' ) return;
    error_log(\'posse_twitter() made it past format check\');

    $post_id = $post->ID;
    $shortlink = wp_get_shortlink();
    $tweet_content = $post->post_content.\' \'.$shortlink;

    // ...run code once
    if ( !get_post_meta( $post_id, \'tweeted\', $single = true ) ) {

        error_log(\'posse_twitter() not tweeted before\');

        // require the relevant libraries
        require get_template_directory() .\'/inc/posse/libraries/tmhOAuth/tmhOAuth.php\';
        require get_template_directory() .\'/inc/posse/libraries/tmhOAuth/tmhUtilities.php\';
        $tmhOAuth = new tmhOAuth(array(
            \'consumer_key\'    => \'XXXXX\',
            \'consumer_secret\' => \'XXXXX\',
            \'user_token\'      => \'XXXXX\',
            \'user_secret\'     => \'XXXXX\',
        ));

        $code = $tmhOAuth->request(\'POST\', $tmhOAuth->url(\'1/statuses/update\'), array(
        \'status\' => $tweet_content
        ));

        error_log(\'posse_twitter() made it past tmhOAuth, should be on Twitter now\');

        update_post_meta( $post_id, \'tweeted\', true );
    }
}

add_action( \'xmlrpc_publish_post\', \'posse_twitter\' ); 
add_action( \'app_publish_post\', \'posse_twitter\' );
add_action( \'publish_post\', \'posse_twitter\' );
error_log()自从我调试这个以来,它就被包括在内了。当xmlrpc_publish_postapp_publish_post 被击中,但无法通过格式检查。

更新:即使我先将文章保存为草稿(通过XML-RPC),这也不起作用。

1 个回复
最合适的回答,由SO网友:EAMann 整理而成

这是因为变量不匹配。您的函数接受$post_ID, 但实际上你并没有使用它。而是尝试引用全局$post 对象并使用$post->ID. 对于XML-RPC请求,这将不起作用。

重写函数以使用get_post() 要从传入的ID获取post对象,请执行以下操作:

function posse_twitter( $post_ID ) {
    error_log(\'Executing posse_twitter()\');
    $post = get_post( $post_ID );
    // check post format if necessary
    if ( get_post_format( $post->ID ) != \'status\' ) return;
    error_log(\'posse_twitter() made it past format check\');

    ...
}

结束

相关推荐

创建Masable追随者--如Facebook、Twitter登录/连接?

嗨,想问一下是否有人可以分享一下Mashable 注册工作?基本上,你必须注册到他们的网站的唯一选择是通过Facebook或Twitter,在你登录其中一个之后,它会自动创建一个wp\\U用户。不再需要Wordpress登录/Regs。我知道有很多插件,比如Simple Facebook/Twitter/Google connect,但是我还没有找到任何与此相关的插件,比如Mashable。如果有人能在这方面帮助我,那就太好了。[*]:Simple Facebook Connect, Simple Twi