为搜索表单创建简短代码

时间:2020-12-15 作者:Ahmed Ramy Abd Allah

我在函数中添加了此代码段。php文件,但它不执行foreach中的类别。它只显示关键字字段,工作正常,但不显示类别名称。

function jobsform_function($atts) {  
    return \'
      <form class="home-job-search" method="GET" action="https://website.com/jobs/jobs/">
        <div class="home-keywords">
          <input type="text" id="search_keywords" name="search_keywords" placeholder="Enter Keywords" />
        </div>
        <div class="home-categories">
          <select id="search_category" name="search_category">
              <?php foreach ( get_job_listing_categories() as $cat ) : ?>
                 <option value="<?php echo esc_attr( $cat->term_id ); ?>">
                    <?php echo esc_html( $cat->name ); ?>
                 </option>
              <?php endforeach; ?>
          </select>
        </div>
        <div class="home-search-button">
          <input type="submit" value="Search" />
        </div>
      </form>\';
}
add_shortcode(\'jobsform\', \'jobsform_function\');
HTML未读取foreach查询

<form class="home-job-search" method="GET" action="https://design.muntomedia.com/jobs/jobs/">
            <div class="home-keywords">
                <input type="text" id="search_keywords" name="search_keywords" placeholder="Enter Keywords">
            </div>
            <div class="home-categories">
                <select id="search_category" name="search_category">
                    <!--?php foreach ( get_job_listing_categories() as $cat ) : ?-->
                        <option value="<?php echo esc_attr( $cat->term_id ); ?>">
                            <!--?php echo esc_html( $cat--->name ); ?>;
                        </option>
                    <!--?php endforeach; ?-->;
                </select>
            </div>
            <div class="home-search-button">
                <input type="submit" value="Search">
            </div>
        </form>
这就是结果search form有什么建议吗?

1 个回复
SO网友:Awais

您将以一个大字符串的形式返回短代码内容get_job_listing_categories 未正确调用。

此外,我建议使用PHP输出缓冲,这对于WordPress短代码来说是非常好的。

请尝试以下代码:

function jobsform_function($atts) {
    ob_start();
    ?>
      <form class="home-job-search" method="GET" action="https://website.com/jobs/jobs/">
        <div class="home-keywords">
          <input type="text" id="search_keywords" name="search_keywords" placeholder="Enter Keywords" />
        </div>
        <div class="home-categories">
          <select id="search_category" name="search_category">
              <?php foreach (get_job_listing_categories() as $cat): ?>
                 <option value="<?php echo esc_attr($cat->term_id); ?>">
                    <?php echo esc_html($cat->name); ?>
                 </option>
              <?php endforeach;?>
          </select>
        </div>
        <div class="home-search-button">
          <input type="submit" value="Search" />
        </div>
      </form>
<?php
    $output = ob_get_contents();
    ob_end_clean();
    return $output;
}
add_shortcode(\'jobsform\', \'jobsform_function\');

相关推荐

在第三方API响应后发送Gravit Forms通知

我有一个重力表单,在提交时将数据发送给第三方API。它与以下代码连接并通过API保存数据。然而,我现在正试图弄清楚,只有当API响应返回为失败或状态代码201以外的任何内容时,才如何发送管理员通知电子邮件。add_action( \'gform_after_submission_1\', \'post_to_third_party\', 10, 2 ); function post_to_third_party( $entry, $form ) { $post_url =