wmaraci reklam

Wordpress functions.php sorunu

8 Mesajlar 1.012 Okunma
pst.net
wmaraci reklam

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 28 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1027
  • 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 32 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2773
  • 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 28 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1027
  • 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 32 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2773
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Console da hata var mı?
 

 

wmaraci
Mersin evden eve nakliyat

Lions Lions WM Aracı Kullanıcı
  • Üyelik 05.05.2017
  • Yaş/Cinsiyet 28 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1027
  • 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 32 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2773
  • 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 28 / E
  • Meslek Web-Developer
  • Konum İstanbul Avrupa
  • Ad Soyad M** K**
  • Mesajlar 1027
  • 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 32 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2773
  • 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
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)