【问题标题】:change to loop WordPress theme options page更改为循环 WordPress 主题选项页面
【发布时间】:2021-07-02 18:13:42
【问题描述】:

我使用代码制作了一个 WordPress 主题选项页面和 我需要帮助将此代码转换为 php 循环

将 $photo_1 和 photo_1 auto 更改为 $photo_2 etc ---- for x=number

<?php
        
        
// in main file
function my_awesome_page_display() {
    

    if (isset($_POST['photo_1'])) {
        $photo_1 = $_POST['photo_1'];
        update_option('photo_1', $photo_1); 
    }
    if (isset($_POST['link_1'])) {
        $link_1 = $_POST['link_1'];
    update_option('link_1', $link_1);    
    }
    
    if (isset($_POST['photo_2'])) {
        $photo_2 = $_POST['photo_2'];
        update_option('photo_2', $photo_2); 
    }
    if (isset($_POST['link_2'])) {
        $link_2 = $_POST['link_2'];
    update_option('link_2', $link_2);    
    }

 if (isset($_POST['photo_2'])) {
        $photo_3 = $_POST['photo_3'];
        update_option('photo_3', $photo_3); 
    }
    if (isset($_POST['link_3'])) {
        $link_3 = $_POST['link_3'];
    update_option('link_3', $link_3);    
    }
    
    

}

【问题讨论】:

    标签: php wordpress loops


    【解决方案1】:

    这个问题很模糊。如果您可以提供有关用例的更多详细信息,这将对我的回答有所帮助。

    我会查看 HTML 端的多部分表单数据,以将 post 变量作为数组发送。

    但是,如果您在这里寻找的是循环,那么会有什么帮助。

    function my_awesome_page_display() {
    
    $counter = 1;
    
    $photo = array();
    
    $link = array();
    
    do{
        
        if (isset($_POST['photo_'.$counter])) {
            
            $photo[$counter] = $_POST['photo_'.$counter];
            
            update_option('photo_'.$counter, $photo_1); 
            
        }
        
        if (isset($_POST['link_'.$counter])) {
            
            $link[$counter] = $_POST['link_'.$counter];
            
            update_option('link_'.$counter, $link_1);
            
        }
        
        
        //Increment the counter by one each time
        
        $counter++;
        
    }
    while(isset($_POST['photo_'.$counter]));
    //Will go until the POST is not set
    
    }
    

    我强烈建议您使用多部分表单数据:

    <form method="POST" enctype="multipart/form-data">
        One Photo Input: <input type="text" name="photos[]"/>
        Another Photo Input: <input type="text" name="photos[]"/>
    <!-- same for links -->
    </form>
    

    那么更新选项的函数可以很简单如下:

    function my_awesome_page_display() {
    
    $photos = $_POST['photos'];
    $links = $_POST['link'];
        
    //Store photos to ONE option called photo
    
    update_option('photos',json_encode($photos));
    update_option('links',json_encode($links));
    //Use json_decode to get all the values back out of storage
    
    
    
    }
    

    【讨论】:

    • 谢谢@evolove |循环是有帮助的,但在循环中我如何在 $photo_1 = $_POST['photo_'.$counter]; 中创建 $photo_1 变量更改为 $photo_2 , $photo_3 等取决于 $counter
    • 对不起。我已经编辑了我的代码以反映这一点。您应该使用数组来存储键=>值关系
    • 您可以使用的另一种方法,同样,不推荐使用变量声明中的变量,如下所示: $photo_{$counter} = 'valuehere';然后稍后您可以调用 $photo_1 或 $photo_2 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2012-05-31
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    相关资源
    最近更新 更多