略有重复的快捷链接问题

时间:2013-08-04 作者:user2650484

我有一个使用bitly API创建短链接的插件,但有一个问题!

function yoast_bitly_shortlink($url, $id, $context, $allow_slugs) {
    if ( ( is_singular() && !is_preview() ) || $context == \'post\' ) {
        $short = get_post_meta($id, \'_yoast_bitlylink\', true);
        if ( !$short || $short == \'\' ) {
            if ( !defined(\'BITLY_USERNAME\') || !defined(\'BITLY_APIKEY\') ) {
                $short = \'http://yoast.com/wordpress/bitly-shortlinks/configure-bitly/\';
            } else {
                $url = get_permalink( $id );
                $req = \'http://api.bit.ly/v3/shorten?format=txt&longUrl=\'.$url.\'&login=\'.BITLY_USERNAME.\'&apiKey=\'.BITLY_APIKEY;
                if ( defined(\'BITLY_JMP\') && BITLY_JMP )
                    $req .= \'&domain=j.mp\';
                $resp = wp_remote_get( $req );
                if ( !is_wp_error( $resp ) && is_array( $resp[\'response\'] ) && 200 == $resp[\'response\'][\'code\'] ) {
                    $short = trim( $resp[\'body\'] );
                    update_post_meta( $id, \'_yoast_bitlylink\', $short);
                }
            }
        }
        return $short;
    }
    return false;
}
add_filter( \'pre_get_shortlink\', \'yoast_bitly_shortlink\', 99, 4 );

function yoast_bitly_admin_bar_menu() {
    global $wp_admin_bar, $post;

    if ( !isset($post->ID) )
        return;

    $short = wp_get_shortlink( $post->ID, \'query\' );

    if ( is_singular() && !is_preview() ) {
        if ( $short != \'http://yoast.com/wordpress/bitly-shortlinks/configure-bitly/\' )
            $shortstats = $short.\'+\';

        // Remove the old shortlink menu, because it has some weird JS issues with admin bar when giving it submenu\'s.
        $wp_admin_bar->remove_menu(\'get-shortlink\');
        $wp_admin_bar->add_menu( array( \'id\' => \'shortlink\', \'title\' => __( \'Bit.ly\' ), \'href\' => \'javascript:prompt('Short Link:', '\'.$short.\''); return false;\' ) );
        $wp_admin_bar->add_menu( array( \'parent\' => \'shortlink\', \'id\' => \'yoast_bitly-link\', \'title\' => __( \'Bit.ly Link\' ), \'href\' => \'javascript:prompt('Short Link:', '\'.$short.\''); return false;\' ) );
        $wp_admin_bar->add_menu( array( \'parent\' => \'shortlink\', \'id\' => \'yoast_bitly-twitterlink\', \'title\' => __( \'Share on Twitter\' ), \'href\' => \'http://twitter.com/?status=\'.str_replace(\'+\',\'%20\', urlencode( $post->post_title.\' - \'.$short) ) ) );
        $wp_admin_bar->add_menu( array( \'parent\' => \'shortlink\', \'id\' => \'yoast_bitly-stats\', \'title\' => __( \'Bit.ly Stats\' ), \'href\' => $shortstats, \'meta\' => array(\'target\' => \'_blank\') ) );
    }
}
add_action( \'admin_bar_menu\', \'yoast_bitly_admin_bar_menu\', 95 );
它为每个帖子创建2个二进制链接,其中一个是/?p=12345 另一个是/post-name我安排了所有的帖子,所以我注意到?p=12345 在自动保存、预览和计划时创建/post-name 发布帖子后创建。。。不幸的是?p=12345 设置为默认短url;?p=12345 = bit.ly/sdfssdfd 另一个被忽略了。。

我应该如何强制它只创建/post-name 并将其设置为默认值,而不是另一个?!

我试过这个:

$mypost = get_page( $id );
  if ( !in_array($mypost->post_status, array(\'future\', \'publish\')) ) {
    return "Post must be published to get a shortlink";
  }
但正如所指出的,必须发布帖子才能获得短链接(它会创建1个链接,但/?p=12345 在bitly网站上,但在wordpress上看不到)。。。我想我需要的不是发布,而是在计划完成后创建url。。

所以我试着改变

$mypost = get_page( $id );
  if ( !in_array($mypost->post_status, array(\'schedule\', \'future\')) ) {
    return "Post must be published to get a shortlink";
  }
但正如你所想象的那样,它不起作用。。。

你知道怎么解决吗?

谢谢

1 个回复
SO网友:Chief Alchemist

我不确定这是否有帮助,但知道一些动作不止一次可能会有所帮助。例如,save\\u post实际上会对给定的save触发三到四次。一个是修订版。新职位之一。等

在你的情况下,可能是你正在经历类似的事情。无论是什么,都会指定post\\U名称,然后再指定一次。大概

结束

相关推荐

permalinks issue and archives

我对运行在WP 3.3上的一个站点有一个问题,当我们通过“/%post\\u id%/%postname%/”使永久链接成为任何内容时,归档页面会断开并变成404。经过一些研究,我明白了为什么从性能的角度来看,这不是一个好的做法,所以我尝试了建议的备选方案:“/%year%/%postname%/”和“/%post\\u id%/%postname%/”这两个建议都有效,只是只有使用post\\u id的建议,归档URL才会变成“/date/2012/11/”,并被找到。根据permalink的任何其他建