lostyazilim
tr.link

Wordpress functions.php sorunu

8 Mesajlar 1.315 Okunma
acebozum
tr.link

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 29 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1025
  • Beğeniler 366 / 534
  • Ticaret 5, (%100)
Merhabalar. Wordpress'te ajax ile post ettiğim bir form mevcut. Ancak post sonrası sonuçları belirlediğim php kodlarını sadece temanın functions.php'ine eklediğim zaman çalışıyor. Bunun haricinde forma action da versem yol da göstersem hiçbir şekilde kendi hazırladığım php dosyasını görmüyor.



<script></script>





Aday 1

Aday 2

Aday 3






action.js dosyası


<script>
$(document).ready(function () {
$('#p_button').click(function () {
let form = $('#test');

$.ajax({
url: '/wp-admin/admin-ajax.php',
method: 'POST',
data: form.serialize() + '&action=my_action',
success: function (data) {
console.log(data);
}
});
});
});
</script>


bu da php dosyası


add_action('wp_ajax_my_action' , 'my_action');
add_action('wp_ajax_nopriv_my_action' , 'my_action');
function my_action(){
if(isset($_POST["p-settings1"])) {
echo "

Aday 1'i Seçtiniz!

";}
else {
echo "

Başarısız!

";}
if(isset($_POST["p-settings2"])) {
echo "

Aday 2'yi Seçtiniz!

";}
else {
echo "

Başarısız!

";}
if(isset($_POST["p-settings3"])) {
echo "

Aday 3'ü Seçtiniz!

";}
else {
echo "

Başarısız!

";}
die();}
 

 

wmaraci
reklam

wpuzman wpuzman WordPress Developer Kullanıcı
  • Üyelik 13.01.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2771
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Kodlarınızı atın bakalım. Bu şekilde yardımcı olamayız.
 

 

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 29 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1025
  • Beğeniler 366 / 534
  • Ticaret 5, (%100)
wpuzman Ekledim hocam kodları. PHP kodlarını temanın functions.php dosyasına eklediğimde sorunsuz çalışıyor ancak bunun dışında hiçbir yerden çektiremiyorum.
 

 

wpuzman wpuzman WordPress Developer Kullanıcı
  • Üyelik 13.01.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2771
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Console da hata var mı?
 

 

wmaraci
wmaraci

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 29 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1025
  • Beğeniler 366 / 534
  • Ticaret 5, (%100)
wpuzman Evet eğer php kodlarını başka bir dosyaya veya mevcut sayfaya bile eklesem /wp-admin/admin-ajax.php 400 hatası dönüyor consoleda.
 

 

wpuzman wpuzman WordPress Developer Kullanıcı
  • Üyelik 13.01.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2771
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Sorun admin-ajax.php linkini bulamıyor olması. url: '/wp-admin/admin-ajax.php', kısmını değiştirin.

url: '',
 

 

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 29 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1025
  • Beğeniler 366 / 534
  • Ticaret 5, (%100)
wpuzman Hocam bu defa da şöyle bir hata aldım console'da:

/wp-admin/%3C?php%20echo%20admin_url(%22admin-ajax.php%22);%20?%3E

Normal ajaxurl şeklinde yazdığımda ise:

/wp-admin/admin-ajax.php 400

Bu hatayı alıyorum. Php kodlarını temanın functions.php dosyasına eklediğimde çalışıyor sorunsuzca yani ajaxı görüyor ama php kodlarını functions.php dışında bir dosyaya eklediğimde görmüyor bunları ve doğal olarak

add_action('wp_ajax_my_action' , 'my_action');
add_action('wp_ajax_nopriv_my_action' , 'my_action');

kısmını bulamadığı için 400 döndürüyor.
 

 

wpuzman wpuzman WordPress Developer Kullanıcı
  • Üyelik 13.01.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2771
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Bu şekilde bir kodlama yanlış. Bunu düzeltseniz bile başka bir yerde karşınıza sürekli hata cıkaracaktır. Öncelikle aşağıdaki iki fonksiyona aşina olmalısınız.

https://developer.wordpress.org/reference/functions/wp_enqueue_script/
https://developer.wordpress.org/reference/functions/wp_localize_script/

Birisi js dosyasını yükler. Diğeri de o js dosyasına php ile veriler eklemenize yarar. İkinci fonksiyon sayesinde action.js dosyasına admin-ajax dosyasının linkini atayacağız. Kodumuz şöyle olacak.

function js_yukle() {
wp_enqueue_script( 'ajax-dosyasi', get_template_directory_uri() . '/js/action.js', array( 'jquery' ), '1.0.0', true );
$degerler = array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
);

wp_localize_script( 'ajax-dosyasi', 'ajax_object', $degerler );
}

add_action( 'wp_enqueue_scripts', 'js_yukle' );


action.js dosyası da böyle:

$(document).ready(function () {
$('#p_button').click(function () {
let form = $('#test');

$.ajax({
url: ajax_object.ajax_url,
method: 'POST',
data: form.serialize() + '&action=my_action',
success: function (data) {
console.log(data);
}
});
});
});
Lions

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)