it-swarm.asia

كيفية نقل المؤلف Metabox في "نشر" metabox؟

منذ عام تقريبًا أتذكر رؤية مكون إضافي أو بعض التعليمات البرمجية التي سمحت لك بإضافة قائمة منسدلة للمؤلف إلى منشور "نشر" metabox بدلاً من أن يكون بمفرده.

لا يمكنني العثور على هذا الرمز بعد الآن ، وأتساءل عما إذا كان أي شخص يعرف كيفية القيام بذلك بسهولة؟

في موقف مثالي ، أود أن أضيف بشكل أساسي صفًا إضافيًا تحت عنوان "إمكانية الرؤية:" ضمن "نشر قاعدة التعريف" التي تشير إلى "المؤلف:" مع اسم المؤلفين الحاليين ورابط تحرير بعد الاسم. عند النقر على رابط التعديل ، ستظهر القائمة المنسدلة بنفس المعلومات المتاحة في مؤلف المؤلف.

في أي حال ، سأكون ممتنا للغاية لمعرفة كيفية القيام بذلك.

3
NetConstructor.com

أنا تمتص إلى حد ما مع الاشياء الادارية لذلك اختبار هذا بعناية. واجهت بعض المشكلات مع المستخدمين لم يتم طرحها في قائمة منسدلة ، لكنها فشلت أيضًا في مربع meta الافتراضي - ربما بسبب مكدس اختبار messed up.

add_action( 'admin_menu', 'remove_author_box' );
add_action( 'post_submitbox_misc_actions', 'author_in_publish' );

function remove_author_box() {

    remove_meta_box( 'authordiv', 'post', 'normal' );
}

function author_in_publish() {

    global $post_ID;

    $post = get_post( $post_ID );
    echo '<div class="misc-pub-section">Author: ';
    post_author_meta_box( $post );
    echo '</div>';
}
7
Rarst

أعلم أنه سؤال قديم ، لكن يبدو أن الإجابة المحدّثة لا تزال مناسبة.

ربما كانت الإجابة الأصلية هي الخيار الأفضل في ذلك الوقت ، لكنها تفتقد إلى التحقق مما إذا كان نوع المنشور يدعم تغيير المؤلف ووضعه في نمط صندوق التعريف.

PHP الرئيسية

add_action('admin_menu', function (): void {
    $type = getCurrentPostType();
    if ($type) {
        remove_meta_box('authordiv', $type, 'normal');
    }
});

add_action('post_submitbox_misc_actions', function (): void {
    global $post, $user_ID;

    if (!empty($post)) {
        $supportsAuthor = post_type_supports($post->post_type, 'author');

        if ($supportsAuthor) {
            $userId = empty($post->ID) ? $user_ID : $post->post_author;
            $user = get_userdata($userId);
            echo '... fetch some template here';
        }
    }
});

مساعد PHP

function getCurrentPostType(): ?string {
    // https://Gist.github.com/bradvin/1980309
    global $post, $typenow, $current_screen;

    if ($post && $post->post_type) {
        return $post->post_type;
    } elseif ($typenow) {
        return $typenow;
    } elseif ($current_screen && $current_screen->post_type) {
        return $current_screen->post_type;
    } elseif (isset($_REQUEST['post_type'])) {
        return sanitize_key($_REQUEST['post_type']);
    } elseif (isset($_REQUEST['post'])) {
        $p = get_post($_REQUEST['post']);
        if ($p) {
            return $p->post_type;
        }
    }

    // Unknown
    return null;
}

PHTML

<div class="misc-pub-section misc-pub-author" id="author">
    <?=sprintf(__('Author: %s', 'aym'), "<b>{$user->display_name}</b>")?>
    <a href="#author" class="edit-author hide-if-no-js" role="button" aria-label='<?=__('Edit author', 'aym')?>'>
        <?=__('Edit', 'aym')?>
    </a>

    <div id="post-author-select" class="hide-if-js" style="display: none;">
        <?php post_author_meta_box($post)?>

        <p>
            <a href="#author" class="save-post-author hide-if-no-js button">OK</a>
            <a href="#author" class="cancel-post-author hide-if-no-js button-cancel">Cancel</a>
        </p>
    </div>
</div>

جافا سكريبت

(function($) {
    // Author select in admin edit sidebar
    var $baseEl = $('#author');
    var $select = $('select', $baseEl);
    var $form   = $('#post-author-select', $baseEl);
    var previousValue = $select.val();
    $('a[href="#author"]', $baseEl).on('click', function(e) {
        e.preventDefault();
        $form.slideToggle(300);
    });

    $('.save-post-author', $baseEl).on('click', function(e) {
        e.preventDefault();
        previousValue = $select.val();
        $('b', $baseEl).text($("option:selected", $select).text());
        $form.slideUp(300);
    });

    $('.cancel-post-author', $baseEl).on('click', function(e) {
        e.preventDefault();
        $select.val(previousValue);
        $form.slideUp(300);
    });
})(jQuery);

CSS

.misc-pub-author::before {
    content: "\f110";
    color: #82878c;
    font: normal 20px/1 dashicons;
    speak: none;
    display: inline-block;
    margin-left: -1px;
    padding-right: 3px;
    vertical-align: top;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

#post-author-select {
    padding-top: 5px;
}

#post-author-select select {
    width: 100%;
}

ملاحظة إذا واجهت أخطاء ، فقد يكون السبب هو أن الإصدار الأصلي الذي أستخدمه مصنوع في SCSS و TypeScript و PHP 7.2. ويستخدم محرك قالب مخصص.

0
René

أو استخدام البرنامج المساعد Adminimize لتخصيص هذا عن طريق الخيارات

0
bueltge