it-swarm.com.de

in Unterkategorie und übergeordnetem Element in wp_insert_post posten

dieser Code funktioniert gut. Das Problem, das ich habe, ist, dass, wenn ich es vorlege, nur die Elternkategorie überprüft, nicht die Unterkategorie, obwohl ich sowohl ein Elternteil als auch eine Unterkategorie spezifizierte.

bitte. Was mache ich falsch. ohh, wenn Sie in den HTML-Block schauen, ist der 7 die übergeordnete Katze und die Zahlen nach dem Komma sind die Unterkategorien.

   <?php 
if(isset($_POST['new_post']) == '1') {
    $post_title = $_POST['post_title'];
    $post_category = $_POST['cat'];
    $post_content = $_POST['post_content'];
    $new_post = array(
          'ID' => '',
          'post_author' => $user->ID, 
          'post_content' => $post_content,
          'post_title' => $post_title,
          'post_status' => 'publish',
          'post_category' => array($post_category)

        );

    $post_id = wp_insert_post($new_post);

    // This will redirect you to the newly created post
    $post = get_post($post_id);
    wp_redirect($post->guid);
}      
?>

das ist die html

<form method="post" action="" name="" onsubmit="return checkformf(this);">


<input type="text" name="post_title" size="45" id="input-title"/>

<textarea rows="5" name="post_content" cols="66" id="text-desc"></textarea></br>


<ul><select name='cat' id='cat' class='postform' > 
    <option class="level-0" value="7,95">child cat1</option> 
    <option class="level-0" value="7,100">child cat2</option> 
    <option class="level-0" value="7,101">child cat3</option> 
    <option class="level-0" value="7,94">child cat4</option> 
</select> 
</ul>

<input type="hidden" name="new_post" value="1"/> 

<input class="subput" type="submit" name="submitpost" value="Post"/> 


</form>

bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Danke im Voraus

1
andrewk

Das Problem ist, dass Sie ein solches Array in PHP nicht erstellen können. Wenn Sie versuchen, eine Zeichenfolge, die eine durch Kommas getrennte Liste enthält, als Array umzuwandeln, wird nur ein Array mit einem einzelnen Wert erstellt - Ihre durch Kommas getrennte Zeichenfolge.

Sie möchten die Explosionsfunktion von PHP verwenden, um das Array zu erstellen. Es nimmt einen String und teilt ihn auf der Grundlage eines willkürlichen Trennzeichens in ein vertrauenswürdiges Array auf (in Ihrem Fall verwenden wir ein Komma).

Versuchen Sie so etwas:

if(isset($_POST['new_post']) == '1') {
    $post_title = $_POST['post_title'];
    $arr_post_category = explode(',',$_POST['cat']); // EXPLODE!
    $post_content = $_POST['post_content'];
    $new_post = array(
          'ID' => '',
          'post_author' => $user->ID, 
          'post_content' => $post_content,
          'post_title' => $post_title,
          'post_status' => 'publish',
          'post_category' => $arr_post_category // NOW IT'S ALREADY AN ARRAY

        );

    $post_id = wp_insert_post($new_post);

    // This will redirect you to the newly created post
    $post = get_post($post_id);
    wp_redirect($post->guid);
}
2
MathSmath