programing

워드프레스 테마에 Ajax를 추가하는 방법

luckcodes 2023. 4. 3. 23:38

워드프레스 테마에 Ajax를 추가하는 방법

문제가 생겨서 며칠째 고민하고 있어요.간단한 ajaxPOST 함수를 사용하여 데이터를 MySQL 데이터베이스(WP 데이터베이스가 아님)로 전송하려고 합니다.

이 코드는, 투고 전에 확인할 필요가 있기 때문에, 테마내의 「single-post.php」내에 있습니다.

$.ajax({ url: 'library/functions/admin_checkuser.php',
     data: {action: userID},
     type: 'post',
     success: function(output) {
                  alert(output);
     }
});

단순히 변수를 "admin_checkuser.php" 스크립트로 전송하면 데이터베이스에서 액션을 수행하는 다른 스크립트가 호출됩니다.

admin_checkuser의 코드는 다음과 같습니다.

$userid = $_POST['action'];

echo $userid;//for testing
$oMySQL = new MySQL();
$query = "Select * FROM videotable WHERE uid = '$userid'";
$oMySQL->ExecuteSQL($query);
$bb = $oMySQL->iRecords;
$aa = $oMySQL->aResult;
echo $bb;

if ($bb == 0){
$query = "INSERT INTO videotable VALUES ('','$userid','true')";
$oMySQL->ExecuteSQL($query);
echo 'true';
    exit();

}else{
$sharing = mysql_result($aa,0,"share");
echo $sharing;
exit();

}

근데 대본에 통화가 안 되는 것 같아요.이러한 스크립트는 WordPress 외부에서 테스트되고 작동하므로 WordPress에서 Ajax 호출을 차단하는 것이어야 합니다.그런데 "admin_checkuser.php"를 여러 개의 다른 폴더에 배치하려고 했지만 소용이 없었습니다.

잘 부탁드립니다.

내장된 Wordpress AJAX 요청을 사용하는 것이 훨씬 좋습니다.

그래서 당신의 테마에서functions.phpfile, 호출할 함수를 추가합니다.예:

function checkUser() {

    $userid = $_POST['user']; //validation also :)
    $oMySQL = new MySQL();
    $query = "Select * FROM videotable WHERE uid = '$userid'";
    $oMySQL->ExecuteSQL($query);
    $bb = $oMySQL->iRecords;
    $aa = $oMySQL->aResult;
    echo $bb;

    if ($bb == 0){
    $query = "INSERT INTO videotable VALUES ('','$userid','true')";
    $oMySQL->ExecuteSQL($query);
    echo 'true';
        exit();

    } else {
    $sharing = mysql_result($aa,0,"share");
    echo $sharing;
    exit();

    }
}

그 후 내장된 AJAX 시스템에 connects를 사용하여 후크를 추가합니다.

add_action('wp_ajax_check_user', 'checkUser');
add_action('wp_ajax_nopriv_check_user', 'checkUser');

wp_ajax_nopriv_%s프런트 엔드에서 호출할 수 있습니다.

그리고 자바스크립트 파일에서 에이잭스 요청을 실행하세요

$.post(ajaxurl, { action: 'check_user', user: userId }, function(output) {
     alert(output);
 });

한다면ajaxurl정의되지 않았습니다.템플릿 파일에 작성해야 합니다.이러한 방법은 동작합니다만, 다른 방법이 있습니다.

add_action('wp_head','ajaxurl');
function ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}

나머지는 워드프레스의 백엔드가 합니다.

AJAX 요청에서 전달된 액션을 수행하고 대응하는 액션을 찾습니다.`wp_ajax(_nopriv)_%s후크에 할당된 함수를 호출합니다.

또, 어느쪽인가에 통과합니다.$_POST또는$_GETAJAX 요청 유형에 따라 달라집니다.

AJAX 사용에 대한 자세한 내용은 Wordpress에서 확인할 수 있습니다.

ajax 콜의 URL을 확인해야 합니다.

상대 URL 대신 전체 URL을 사용할 수 있습니다.

테마 위치 때문에 URL이 잘못되었을 수 있습니다.당신의 아약스 코드가 당신의 테마 폴더에 있을 거예요

테마 디렉토리를 가져오는 몇 가지 워드프레스 함수가 있습니다.

예를 들어 이 페이지에서http://yourwebpage/test/그럼 에이잭스 콜이 여기로 갈 거야http://yourwebpage/test/library/functions/admin_checkuser.php여기가 잘못된 장소라고 생각합니다.

따라서 스크립트에 절대 URL을 추가해야 합니다.그리고 만약 그것이 당신의 테마에 있다면, 당신은 이 방법을 사용할 수 있습니다.get_template_directory_uri()이치노

여기를 참조해 주세요.http://codex.wordpress.org/Function_Reference/get_template_directory_uri

언급URL : https://stackoverflow.com/questions/10589018/how-to-add-ajax-to-wordpress-theme