ค่าที่กำหนดไว้ล่วงหน้าสำหรับการเลือกผู้ใช้ในประเภทโพสต์ที่กำหนดเอง (ข้อมูลเมตาเทียบกับอนุกรมวิธาน)

ฉันกำลังสร้างปลั๊กอินที่อนุญาตให้ผู้เยี่ยมชมส่งการกำหนดค่าซอฟต์แวร์เพื่อแชร์กับผู้อื่น พวกเขาป้อนข้อมูลหลายบิต (ชื่อ ซอฟต์แวร์ และเครื่อง) จากนั้นอัปโหลดโปรไฟล์ XML ซึ่งท้ายที่สุดจะถูกแปลงเป็นประเภทโพสต์แบบกำหนดเอง

ณ ตอนนี้ ฉันกำลังจัดเก็บทุกสิ่งที่พวกเขาป้อน เช่น ชื่อ ซอฟต์แวร์ ประเภทเครื่อง ฯลฯ เป็นเมตาดาต้า ฉันต้องการมีตัวเลือกที่กำหนดไว้ล่วงหน้าสำหรับประเภทซอฟต์แวร์/เครื่อง เพื่อให้พวกเขาเลือกตัวเลือกเหล่านี้ได้เมื่อส่ง

ป้อนคำอธิบายรูปภาพที่นี่

อะไรจะเป็นวิธีที่ดีในการบรรลุเป้าหมายนี้ใน Wordpress ฉันควรเก็บค่าเหล่านี้เป็นค่าที่กำหนดไว้ล่วงหน้าในกล่องเลือกผ่านแบบฟอร์ม จากนั้นบันทึกข้อมูลเป็นข้อความในข้อมูลเมตา หรือมีทางเลือกอื่นที่ดีกว่าหรือไม่

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 แหล่งที่มา


คำตอบ (1)


หากคุณต้องการจัดกลุ่มรายการต่างๆ เข้าด้วยกัน ให้ใช้อนุกรมวิธาน นอกเหนือจากการเป็นคำจำกัดความที่แท้จริงของคำแล้ว ยังทำให้ง่ายต่อการดึงโพสต์ทั้งหมดสำหรับซอฟต์แวร์เดียวกันและเก็บกลุ่มเหล่านั้นไว้ นั่นคือสิ่งที่ Taxonomy มีความเป็นเลิศ

หากคุณมี CPT โดยรวมมากกว่านี้ เพียงแค่ต้องมีข้อมูลเล็กๆ น้อยๆ ที่แนบมาด้วย นั่นคือสิ่งที่ กำหนดเอง สาขาเก่งที่ โดยหลักแล้วมีไว้สำหรับข้อมูลที่กำหนดเองซึ่งไม่เกี่ยวข้องกันในหมวดหมู่ เช่น Price หรือ Event Start Date หรือ Facebook Group/Page URL

ฟังดูดูเหมือนว่าคุณจะเหมาะสมกับความสัมพันธ์ทางอนุกรมวิธาน/คำศัพท์สำหรับซอฟต์แวร์และประเภทเครื่องมากกว่า แม้ว่าท้ายที่สุดแล้วจะขึ้นอยู่กับคุณก็ตาม คุณ สามารถ ค้นหาโพสต์ตามฟิลด์ที่กำหนดเอง แต่ข้อมูลที่สามารถกำหนดหมวดหมู่ได้จะเหมาะกับการจัดอนุกรมวิธานมากกว่า

นอกเหนือจากที่ไม่เกี่ยวข้องกัน มีเหตุผลใดที่คุณใช้คำสั่ง echo ต่อบรรทัด แทนที่จะแค่ปิดแท็ก PHP ของคุณและสะท้อนตัวแปร PHP บางตัวที่คุณมีใน HTML มาตรฐานหรือไม่

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
ขอบคุณ! ฉันไม่เคยใช้การจัดอนุกรมวิธานในปลั๊กอินตัวใดตัวหนึ่งของฉัน ดังนั้นฉันจึงไม่แน่ใจเล็กน้อยถึงจุดประสงค์ของมัน ฉันดำเนินการต่อและเริ่มแปลง 2 ฟิลด์นั้นไป และตอนนี้เมื่อมีการนำไปใช้แล้ว ฉันคิดว่าฟิลด์เหล่านั้นเหมาะสมกับวัตถุประสงค์มากกว่ามาก ตอนนี้ฉันเพิ่งเติมกล่องเลือกบนอินเทอร์เฟซผู้ใช้ด้วยเงื่อนไขอนุกรมวิธานที่เกี่ยวข้องซึ่งผู้ใช้สามารถเลือกจากรายการได้ ด้วยวิธีนี้สิ่งที่ฉันเพิ่ม/แก้ไข/ลบจะสะท้อนให้เห็นเช่นกัน (ดีกว่ารายการฮาร์ดโค้ดมาก) - person Aidan Knight; 22.03.2018
comment
สำหรับบรรทัดเสียงสะท้อนแต่ละบรรทัด ฉันค่อนข้างแน่ใจว่าฉันได้คัดลอกส่วนย่อยโค้ดเพื่อทดสอบก่อนหน้านี้ และคงรูปแบบไว้สำหรับบล็อกโค้ดนั้นโดยเฉพาะ ปกติฉันไม่ทำแบบนั้น มันทำให้ฉันรำคาญ แต่ฉันแค่ทดสอบเพื่อดูว่าอะไรได้ผลและไม่ได้ผล :) - person Aidan Knight; 22.03.2018
comment
ฮ่าๆ ฉันก็รู้ความรู้สึกนะ! ฉันมีโค้ดเก่าสำหรับโปรเจ็กต์ขนาดใหญ่ที่ฉันไม่สามารถรีแฟคเตอร์ได้ทั้งหมด จึงต้องปรับตัวเพื่อรับการอัปเดต ???? ดีใจที่คุณคิดภาษีได้แล้ว ฉันคิดว่าในระยะยาว มันจะดีขึ้นมากโดยปวดหัวน้อยลง ขอให้โชคดี! - person Xhynk; 22.03.2018