web-dev-qa-db-ja.com

パーマリンクとプレビューボタンを隠してカスタム投稿にリンクする

誰もが "Publish,save draft,and preview button"を含むカスタムボックスの作り方を知っていますか?公開ボタン以外のすべてのボタンを非表示にします。また、 "change permalink"と同じ投稿内の "view,delete,edit"リンクで、パーマリンクを非表示にしてリンクを表示する方法は?

ここで私が話しているのはイラストです。

オリジナルのWordpressから発行ボタンをカスタマイズする

enter image description hereenter image description here

元のワードプレスからの投稿リンクのカスタマイズ

enter image description hereenter image description here

ワードプレスの記事のタイトルの下にあるパーマリンクを削除する

enter image description here

6
user3073032

あなたはフックを使って上記を達成することができます。この作品を入手するには、アクティブテーマのfunctions.phpファイルにある以下のコードを使用してください。

ワードプレスの記事のタイトルの下にあるパーマリンクを削除する

add_filter( 'get_sample_permalink_html', 'wpse_125800_sample_permalink' );
function wpse_125800_sample_permalink( $return ) {
    $return = '';

    return $return;
}

元のワードプレスからの投稿リンクのカスタマイズ

add_filter( 'page_row_actions', 'wpse_125800_row_actions', 10, 2 );
add_filter( 'post_row_actions', 'wpse_125800_row_actions', 10, 2 );
function wpse_125800_row_actions( $actions, $post ) {
    unset( $actions['inline hide-if-no-js'] );
    unset( $actions['view'] );

    return $actions;
}

オリジナルのWordpressから発行ボタンをカスタマイズする

以下に改善の余地があります、私はフックが次のことをすることができなかったので、それを隠すためにcss方法を使いました。

global $pagenow;
if ( 'post.php' == $pagenow || 'post-new.php' == $pagenow ) {
    add_action( 'admin_head', 'wpse_125800_custom_publish_box' );
    function wpse_125800_custom_publish_box() {
        if( !is_admin() )
            return;

        $style = '';
        $style .= '<style type="text/css">';
        $style .= '#edit-slug-box, #minor-publishing-actions, #visibility, .num-revisions, .curtime';
        $style .= '{display: none; }';
        $style .= '</style>';

        echo $style;
    }
}

ノート

私の場合は追加の条件付きステートメント、ここで私はすでに条件付きステートメントを解決しました

global $pagenow;
if( 'edit.php' == $pagenow && isset($_GET['page_type']) == 'my-custom-post' ){
     // here i use delete post row function that explained by Maruti Mohanty on my custom post 
}

新しい投稿およびカスタムパブリッシュメタボックス設定を追加するための条件付きステートメント

global $pagenow;
    if( 'page-new.php' == $pagenow && isset($_GET['page_type']) == 'my-custom-post' ){
         // here i use add new post and custom publish metabox function
    }

他に説明があれば教えてください。

ありがとうございます。

9
Maruti Mohanty

私はこの質問に出くわしただけで、すべてのシナリオで誰にもうまくいかない可能性がある最も一般的な解決策を共有したいと思いましたが、これが望ましい結果を得るための最も効率的な方法だと思います。

テーマまたはプラグインにシングルビュー出力を必要としないCPTを登録するときは、単にプロパティ'public' => false,を定義します。

たとえば、一般的なCPT登録は次のようになります。

<?php 

/**
 * Custom Post Type: cw-programs (programs)
 * Theme: Your Custom Theme
 * Desc: A custom WP theme
 *
 * @package custom-wp-theme
 * @since   1.0.0
 * @version 1.0.0
 */
function mycpt_content_type_name() {
  $labels = array(
    'name' => __( 'My CPT'),
    'singular_name' => __( 'My CPT' ),
    'add_new' => _x('Add New', 'My CPT'),
    'add_new_item' => __('Add New My CPT'),
    'edit_item' => __('Edit My CPT'),
    'new_item' => __('New My CPT'),
    'view_item' => __('View My CPT'),
    'search_items' => __('Search My CPT'),
    'not_found' =>  __('No My CPT found'),
    'not_found_in_trash' => __('No My CPT found in Trash'), 
    );
    $args = array(
    'labels' => $labels,
    'menu_icon' => 'dashicons-clipboard',
    'public' => false,
    'publicly_queryable' => false,
    'show_ui' => true, 
    'query_var' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'rewrite' => array('slug' => __( 'mycpt' )),
    'supports' => array('title', 'editor'),
    'show_in_menu' => false
    ); 

    register_post_type(__( 'cw-program' ),$args);
}

add_action( 'init', 'mycpt_content_type_name' );

一挙に、これはすべての関連する管理画面からビュー、スラッグ、プレビュー変更リンクを削除する必要があります。私はこの解決策が好きです。追加の機能を必要とせず、ロジックはあなたのcptと同じ場所で定義されているからです(明らかに)。これが他の人々に役立つことを願い、同様の解決策を模索します。

11
derekshirk

publicly_queryable 引数をfalseに設定することで、投稿のプレビュー、表示、および固定リンクフィールドを削除できます。

setting **publicly_queryable** argument to false 

1
Fahid Javid