【问题标题】:Wordpress Front End Form to Publish/Draft Posts directly直接发布/草稿帖子的 Wordpress 前端表单
【发布时间】:2012-07-03 13:33:06
【问题描述】:

我有一个 Wordpress 前端表单,可以直接从我的主题发布/起草帖子:-

<?php
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_post") {

    // Do some minor form validation to make sure there is content
    $title = $_POST["title"];
    if(!empty($_POST['middle'])) {
    $description = 'a sentence ' . $_POST['middle'] . ' with something in the MIDDLE. a sentence ' . $_POST['end'] . ' with something in the END.';
    }
    $tags = $_POST["tags"];
    $post_cat = $_POST['cat'];

    // ADD THE FORM INPUT TO $new_post ARRAY
    $new_post = array(
    'post_title'    =>  $title,
    'post_content'  =>  $description,
    'post_category' =>  $post_cat,  // Usable for custom taxonomies too
    'tags_input'    =>  $tags,
    'post_status'   =>  'draft',           // Choose: publish, preview, future, draft, etc.
    'post_type' =>  'post',  //'post',page' or use a custom post type if you want to
    );

    //SAVE THE POST
    $pid = wp_insert_post($new_post);

    //REDIRECT TO THE NEW POST ON SAVE
    $link = get_permalink( $pid );
    wp_redirect( '/post-submitted-draft' );

} // END THE IF STATEMENT THAT STARTED THE WHOLE FORM

//POST THE POST YO
do_action('wp_insert_post', 'wp_insert_post');

?>

我有一个简单的 php 表单,它具有以下功能:-

<?php
if(!empty($_POST['middle'])) {
   echo "a sentence".$_POST['middle']." with something in the MIDDLE.";
}

if(!empty($_POST['end'])) {
   echo "a sentence".$_POST['end']." with something in the END.";
}
?>

我想将它包含在表单中,我使用以下方法完成了它:-

if(!empty($_POST['middle'])) {
$description = 'a sentence ' . $_POST['middle'] . ' with something in the MIDDLE. a sentence ' . $_POST['end'] . ' with something in the END.';

但是如果'middle'的字段为空,它将忽略$description的整个值,如果'middle'的字段为空,我希望它只忽略第一句并显示具有该字段的第二句“结束”即

'a sentence ' . $_POST['end'] . ' with something in the END.';

如何让它像这样工作?

【问题讨论】:

    标签: php forms wordpress frontend


    【解决方案1】:

    遵循下面的方法将使整个事情变得更好,更有意义。基本上,将描述变量设置为第一句,如果存在则添加第二位。

    if(!empty($_POST['middle'])) {
       $description = "a sentence".$_POST['middle']." with something in the MIDDLE.";
    }
    
    if(!empty($_POST['end'])) {
       $description .= "a sentence".$_POST['end']." with something in the END.";
    }
    
    if(isset($description)) {
    // do something with description
    }
    

    另外,根据你的用途考虑转义字符串。

    【讨论】:

    • 如果我有一个“开始”字段作为开头的句子,并且它是必填字段,所以用户必须填写它?我应该在上面的代码之前以以下简单的方式添加它吗? $description = "a sentence".$_POST['start']." with something in the START.";
    • 感谢您的回答,请您看看这个与php和MySQL有关的问题...stackoverflow.com/questions/11282461/…
    • 你也能说出来吗? stackoverflow.com/questions/11333589/…
    【解决方案2】:

    改变:

    if(!empty($_POST['middle'])) {
    $description = 'a sentence ' . $_POST['middle'] . ' with something in the MIDDLE. a sentence ' . $_POST['end'] . ' with something in the END.';
    

    到:

    $description = (!empty($_POST['middle']))? 'a sentence ' . $_POST['middle'] . ' with something in the MIDDLE.': '' ;
    $description .= (!empty($_POST['end']))? 'a sentence ' . $_POST['end'] . ' with something in the END.': '' ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      相关资源
      最近更新 更多