Nilai yang telah ditentukan sebelumnya untuk pilihan pengguna dalam jenis posting khusus (metadata vs taksonomi)

Saya sedang membangun sebuah plugin yang memungkinkan pengunjung mengirimkan konfigurasi perangkat lunak untuk dibagikan kepada orang lain. Mereka memasukkan beberapa bit informasi (nama, perangkat lunak, dan mesin) dan kemudian mengunggah profil XML mereka, yang pada akhirnya diubah menjadi jenis kiriman khusus.

Saat ini, saya menyimpan semua yang mereka masukkan seperti nama, perangkat lunak, jenis mesin, dll. sebagai metadata. Saya ingin memiliki opsi yang telah ditentukan sebelumnya untuk jenis perangkat lunak/mesin, memungkinkan mereka untuk memilih dari opsi ini saat mengirimkan.

masukkan deskripsi gambar di sini

Apa cara yang baik untuk mencapai ini di Wordpress? Haruskah saya menyimpannya sebagai nilai yang telah ditentukan sebelumnya di kotak pilihan melalui formulir, lalu menyimpan data sebagai teks dalam metadata atau adakah alternatif yang lebih baik?

function slicer_profile_form()
{
    echo '<form action="' . esc_url( $_SERVER['REQUEST_URI'] ) . '" method="post" enctype="multipart/form-data">';

    echo '<p>';
    echo 'Your Name<br />';
    echo '<input type="text" name="slicer-profile-author" pattern="[a-zA-Z0-9 ]+" value="' . ( isset( $_POST["slicer-profile-author"] ) ? esc_attr( $_POST["slicer-profile-author"] ) : '' ) . '" size="48" />';
    echo '</p>';

    echo '<p>';
    echo 'Profile Name<br />';
    echo '<input type="text" name="slicer-profile-name" pattern="[a-zA-Z0-9 ]+" value="' . ( isset( $_POST["slicer-profile-name"] ) ? esc_attr( $_POST["slicer-profile-name"] ) : '' ) . '" size="48" />';
    echo '</p>';

    echo '<p>';
    echo 'Profile Description<br />';
    echo '<textarea name="slicer-profile-description" pattern="[a-zA-Z0-9 ]+" value="' . ( isset( $_POST["slicer-profile-description"] ) ? esc_attr( $_POST["slicer-profile-description"] ) : '' ) . '" rows="4"></textarea>';
    echo '</p>';

    echo '<p>';
    echo '3D Printer Model<br />';
    echo '<select name="slicer-profile-model">';
    echo '<option value="a8">Anet A8</option>';
    echo '<option value="cr10">Creality CR-10</option>';
    echo '<option value="mini">Monoprice Select Mini</option>';
    echo '<option value="makerselect">Monoprice Maker Select</option>';
    echo '<option value="ultimate">Monoprice Ultimate</option>';
    echo '<option value="prusamk2">Prusa MK2/MK2S/MK3</option>';
    echo '</select>';
    echo '</p>';

    echo '<p>';
    echo 'Slicer Software<br />';
    echo '<select name="slicer-profile-software">';
    echo '<option value="cura">Cura</option>';
    echo '<option value="s3d">Simplify3D</option>';
    echo '<option value="slic3r">Slic3r</option>';
    echo '</select>';
    echo '</p>';

    echo '<p>';
    echo 'Slicer Profile<br />';
    echo '<input type="file" name="slicer-profile" accept=".fff,.ini,.curaprofile">';
    echo '</p>';

    echo '<p><input type="submit" name="slicer-profile-submitted" value="Submit"/></p>';
    echo '</form>';
}

person Aidan Knight    schedule 22.03.2018    source sumber


Jawaban (1)


Jika Anda ingin mengelompokkan item, gunakan taksonomi. Selain definisi literal dari kata tersebut, ini memudahkan untuk menarik semua postingan untuk perangkat lunak yang sama dan mengelompokkannya. Itulah keunggulan Taksonomi.

Jika Anda hanya memiliki CPT yang lebih keseluruhan, yang hanya perlu memiliki sedikit informasi sewenang-wenang yang dilampirkan padanya, itulah yang Custom Bidang unggul di. Hal ini terutama untuk informasi arbitrer yang tidak dapat dikaitkan secara kategoris, seperti Price, atau Event Start Date, atau Facebook Group/Page URL.

kedengarannya Anda akan lebih cocok dengan taksonomi/hubungan istilah untuk Perangkat Lunak dan Jenis Mesin, meskipun pada akhirnya semuanya terserah Anda. Anda dapat membuat kueri postingan berdasarkan kolom khusus, namun informasi yang dapat ditentukan secara kategori lebih cocok untuk taksonomi.

Selain itu, apakah ada alasan khusus mengapa Anda menggunakan pernyataan echo per baris alih-alih hanya menutup tag PHP Anda dan menggemakan beberapa variabel PHP yang Anda miliki di dalam HTML standar?

function slicer_profile_form(){ ?>
    <form action="<?= esc_url( $_SERVER['REQUEST_URI'] ); ?>" method="post" enctype="multipart/form-data">
        <label>
            Your Name<br>
            <input type="text" name="slicer-profile-author" pattern="[a-zA-Z0-9 ]+" value="<?= ( isset( $_POST["slicer-profile-author"] ) ? esc_attr( $_POST["slicer-profile-author"] ) : '' ); ?>" size="48" />
        </label>
        <label>
            Profile Name<br>
            <input type="text" name="slicer-profile-name" pattern="[a-zA-Z0-9 ]+" value="<?= ( isset( $_POST["slicer-profile-name"] ) ? esc_attr( $_POST["slicer-profile-name"] ) : '' ); ?>" size="48" />
        </label>
        <label>
            Profile Description<br>
            <textarea name="slicer-profile-description" pattern="[a-zA-Z0-9 ]+" value="<?= ( isset( $_POST["slicer-profile-description"] ) ? esc_attr( $_POST["slicer-profile-description"] ) : '' ); ?>" rows="4"></textarea>
        </label>
        <label>
            3D Printer Model<br>
            <select name="slicer-profile-model">
                <option value="a8">Anet A8</option>
                <option value="cr10">Creality CR-10</option>
                <option value="mini">Monoprice Select Mini</option>
                <option value="makerselect">Monoprice Maker Select</option>
                <option value="ultimate">Monoprice Ultimate</option>
                <option value="prusamk2">Prusa MK2/MK2S/MK3</option>
            </select>
        </label>
        <label>
            Slicer Software<br>
            <select name="slicer-profile-software">
                <option value="cura">Cura</option>
                <option value="s3d">Simplify3D</option>
                <option value="slic3r">Slic3r</option>
            </select>
        </label>
        <label>
            Slicer Profile<br>
            <input type="file" name="slicer-profile" accept=".fff,.ini,.curaprofile">
        </label>
        <p>
            <input type="submit" name="slicer-profile-submitted" value="Submit" />
        </p>
    </form>
<?php } ?>
person Xhynk    schedule 22.03.2018
comment
Terima kasih! Saya belum pernah menggunakan taksonomi di salah satu plugin saya, jadi saya agak tidak yakin dengan tujuannya. Saya melanjutkan dan mulai mengonversi 2 bidang tersebut dan sekarang setelah diterapkan, menurut saya bidang tersebut jauh lebih cocok untuk tujuan tersebut. Saya baru saja mengisi kotak pilihan pada antarmuka pengguna dengan istilah taksonomi terkait sekarang, di mana pengguna dapat memilih dari daftar. Dengan begitu, apa pun yang saya tambahkan/edit/hapus juga tercermin di sana (jauh lebih baik daripada daftar hard-coded). - person Aidan Knight; 22.03.2018
comment
Sedangkan untuk semua baris gema individual, saya cukup yakin saya menyalin cuplikan kode untuk diuji sebelumnya dan hanya menyimpan formatnya untuk blok kode tertentu. Saya biasanya tidak melakukan itu, itu mengganggu saya, tetapi saya hanya menguji untuk melihat apa yang berhasil dan tidak :) - person Aidan Knight; 22.03.2018
comment
Haha aku tahu perasaan itu! Saya punya beberapa kode lama untuk proyek besar yang tidak dapat saya refaktorisasi sepenuhnya sehingga harus beradaptasi untuk pembaruan ????. Senang Anda mengetahui pajaknya, menurut saya - dalam jangka panjang, ini akan lebih cocok dengan lebih sedikit sakit kepala. Semoga beruntung! - person Xhynk; 22.03.2018