Support » Allgemeine Fragen » PHP Funktion returned

  • Morje,
    stehe vor einem sehr kuriosem Problem und komme nicht weiter..
    Ich rufe via Ajax eine PHP Funktion aus der functions.php meines Themes (agama-blue) auf.
    Dort wird ein Beitrag erstellt und es soll später geprüft werden, ob dies auch funktioniert hat. Je nachdem wird ein true oder ein false zurückgegeben. Allerdings wird vor dieses true oder false bei der Rückgabe ein „↲“ gesetzt, was die weitere Verarbeitung dieses Rückgabewertes unmöglich macht. Hat jemand eine Idee woran dies liegen könnte?
    Code:

    add_action("wp_ajax_setNewCategory", "setNewCategory");
    add_action("wp_ajax_nopriv_setNewCategory", "setNewCategory");
    function setNewCategory()
    {
    	$s_userName = trim($_POST["selectedUserHolder"]);
        $s_userToWrite = '';
        $s_dateFrom = trim($_POST['date_from']);
        $s_dateUntil = trim($_POST['date_until']);
        $i_countDays = trim($_POST['days_count']);
        $s_category = trim($_POST['newCategoryHolder']);
        if ($s_category == "Cat 1")
        {
            $s_category = "Cat 1";
        }
        if ($s_category == "Cat 2")
        {
            $s_category = "Cat 2";
        }
        $a_categories = get_categories(array('hide_empty' => false));
        foreach($a_categories as $a_cat)
        {
            $s_catName = $a_cat->name;
            if ($s_catName == 'Cat 3')
            {
                $i_catId = get_cat_ID($s_catName);
            }
        }
        $s_userToWrite = $s_userName;
        $o_contentForPost = file_get_contents_curl('https://test.de/wp-includes/test.php?name='.urlencode($s_userToWrite).'&dateFrom='.$s_dateFrom.'&dateUntil='.$s_dateUntil.'&countDays='.$i_countDays.'&category='.$s_category);
        $a_newPost = array
        (
            'post_title' => $s_userToWrite." - ".$s_dateFrom." bis ".$s_dateUntil,
            'post_content' => html_entity_decode($o_contentForPost),
            'post_status' => 'publish',
            'post_author' => $user_id,
            'post_type' => 'post',
            'post_category' => array($i_catId)
        );
        kses_remove_filters();
        $i_newPostId = wp_insert_post($a_newPost);
        kses_init_filters();
    	if ($i_newPostId != "" || $i_newPostId != NULL || $i_newPostId != "undefined")
    	{
    		echo "true";
    	}
    	else
    	{
    		echo "false";
    	}
    	die();
    }
    • Dieses Thema wurde geändert vor 5 Monate, 2 Wochen von  pbuchholz.
Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Moderator espiat

    (@espiat)

    1. Der ajax call fehlt wohl in deiner Code-Angabe.

    2. Ohne mir jetzt den Code genau angesehen zu haben, fällt mir sofort auf, dass du lediglich ein echo true oder false ausgibst.
    Du machst ja an der Stelle keinen return false oder true.
    Hoffe das hilft weiter.

    Entschuldige, hier die Ajax Methode:

    $("#sendDocument").on("click", function(event){
            event.preventDefault();
            var documentStatus = checkData($("#currUserName").val(), $("#dateFrom").val(), $("#dateUntil").val(), $("#daysCount").val(), $("#newCategoryHolder").val());
            if (documentStatus)
            {
                $.ajax({
                    url:"https://test.de/wp-admin/admin-ajax.php",
                    method:"POST",
                    contentType:"application/x-www-form-urlencoded;charset=UTF-8",
                    data: { action:"setNewCategory", selectedUserHolder:$("#currUserName").val().trim(), date_from:$("#dateFrom").val().trim(), date_until:$("#dateUntil").val().trim(), days_count:$("#daysCount").val().trim(), newCategoryHolder:$("#newCategoryHolder").val().trim() },
                    success:function(result){
                        if (result == "true")
                        {
                            Notification.requestPermission().then(function(result)
                            {
                                if (result === 'denied') { alert('denied'); return; }
                                if (result === 'default') { alert('dismissed'); return; }
                                var options = {
                                    body: 'Notification erfolgreich erstellt.',
                                    icon: 'https://test.de/wp-includes/etc_logo1.jpg'
                                }
                                var o = new Notification('NIRVANA', options);
                                o.onclick = function(event) { window.open("https://test.de/Seite1/", "_blank") }
                            });
                            window.location.href = "https://test.de/Seite1";
                        }
                    }
                });
            }
        });

    In der Zeile „success:function(result){“ hat result dann den besagten Wert.

    Über return „true“ oder return true bekomme ich keinen Wert zurück..
    Habe mehrere Funktionen die so laufen und per echo einen Wert zurückgeben, daher das die() am Ende, bei denen es funktioniert.

    • Diese Antwort wurde geändert vor 5 Monate, 2 Wochen von  pbuchholz.

    Hat hier jemand eine Idee?

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)