web-dev-qa-db-ja.com

プレビューボタンカスタム

カスタムWordpressを既存のサイトフレームワークにインストールするときに、プレビューリンクを正しい場所に変更する簡単なプラグインを作成しました。

'preview_post_link'フィルタを使用して、リンクを次のように変更します。

http://www.domain.com/wp-custom.php?p=123456&preview=true

これはaタグの上にマウスを移動して調べると完全に機能します。

<a class="preview button" href="http://www.domain.com/wp-custom.php?p=123456&amp;preview=true" target="wp-preview" id="post-preview">Preview</a>

右クリックして新しいウィンドウ/タブを開くと、正常に開きます。実際のボタンをクリックしても、アドレスバーにURLが表示されません。

http://www.domain.com/?p=123456&preview=true

何が起こっているのか、または回避策がよくわからないのですか。私が考えることができる唯一のことは多分ある種のJQueryがボタンが直接クリックされたときの振る舞いに影響を及ぼしている.previewまたは#post-previewでwordpressによって実行されることです。

どのように改善するかについてのどんな考えでも大いに感謝されるでしょう。どうもありがとう。

ワードプレスのプレビューリンクを修正する簡単な方法を示すために更新されました。

function custom_change_preview_link($link) {
    return preg_replace('/\?/','wp-custom.php?',$link);
}
add_filter( 'preview_post_link', 'custom_change_preview_link' );
add_filter( 'preview_page_link', 'custom_change_preview_link' );
2
Jimbo

私がそれを機能させることがわかった唯一の方法は、 このtracチケットで提案された2番目のパッチを実装することです

私はそれがコアファイルの中のパッチであることを知っています、しかしWP(3.6)の次のバージョンでは、変更がコミットされることになっているので、アップデートに関する問題はないはずです。

編集する

注意/免責事項:以下のミニプラグインがDaniel Bachhubersの "Edit-Flow" GitHub Pluginから切り取られ、パッチがチケットに掲示されました。テストされておらず、この質問に回答した人から追加されたものではありません。

<?php
defined( 'ABSPATH' ) OR exit;
/** Plugin Name: Fix Preview Link */
add_filter( 'preview_post_link', 'preview_link_fix' );
function preview_link_fix( $preview_link )
{
    $post = get_post( get_the_ID() );
    if (
        ! is_admin()
        OR 'post.php' != $GLOBALS['pagenow']
    )
        return $preview_link;

    $args = array(
         'p'       => $post->ID
        ,'preview' => 'true'
    );
    return add_query_arg( $args, home_url() );
}
1